其他分享
首页 > 其他分享> > 基于 Babel 的 npm 包的最小化设置 [每日前端夜话0x2F]

基于 Babel 的 npm 包的最小化设置 [每日前端夜话0x2F]

作者:互联网

基于 Babel 的 npm 包的最小化设置 [每日前端夜话0x2F]

京程一灯 前端先锋

每日前端夜话0x2F
每日前端夜话,陪你聊前端。
每天晚上18:00准时推送。
正文共:2679 字 1 图
预计阅读时间: 7 分钟

基于 Babel 的 npm 包的最小化设置 [每日前端夜话0x2F]

翻译:疯狂的技术宅
原文:http://2ality.com/2017/07/npm-packages-via-babel.htm

l
这文描述了通过 Babel 生成 npm 包的最小设置。你可以在 GitHub 中看到 re-template-tag 中的设置。

GitHub:https://github.com/rauschma/re-template-tag

1 核心结构

有两组文件:

2 .gitignore


1cjs
2node_modules

cjs/ 没有提交到 git。我们只是在 npm 发布包之前按需生成它。

3 .npmignore


1node_modules

发布到 npm 时,我们需要包含 cjs/。这就是除了 .gitignore 之外我们还需要 .npmignore 的原因。

4 package.json

package.json 的主要部分

可以使用以下脚本:


1"scripts": {
2  "build": "babel esm --out-dir cjs",
3  "prepublishOnly": "npm run build",
4  "test": "ava"
5},

1"devDependencies": {
2  "babel-cli": "^6.24.1",
3  "ava": "^0.21.0",
4  "babel-preset-env": "^1.5.1",
5  "babel-register": "^6.24.1"
6},

1"main": "./cjs/index.js",
2"module": "./esm/index.js",

对于Babel,我们用 babel-preset-env 典型的方式为当前运行的 Node.js 生成代码。


 1"babel": {
 2  "presets": [
 3    [
 4      "env",
 5      {
 6        "targets": {
 7          "node": "current"
 8        }
 9      }
10    ]
11  ]
12},

配置 AVA

对于 AVA,我们需要 babel-register,它通过 Babel 转换所有测试和导入。 "babel": "inherit" 表示 AVA 使用上一节中的配置。


1"ava": {
2  "require": [
3    "babel-register"
4  ],
5  "babel": "inherit"
6}

5 结论

以上是通过 Babel 创建 npm 包最小库的方法。重要的一点是它允许包的客户端使用 babel-preset-env(就像通过npm提供未转换的源代码 ”中所讲的那样)。所以它并没有 100% 的正确使用 module ,但是有广泛支持的优势,并且没有引入另一个 package.json 属性。

以上是通过 Babel 创建 npm 包最小库的方法。重要的一点是它允许包的客户端使用 babel-preset-env(就像“通过npm提供未转换的源代码 ”【http://2ality.com/2017/06/pkg-esnext.html】一文中所讲的那样)。为此,它没有 100% 的正确使用 module ,但具有广泛支持的优势,并且没有引入另一个 package.json 属性。

6 扩展阅读

标签:npm,Babel,preset,env,babel,cjs,0x2F
来源: https://blog.51cto.com/15077562/2615742