博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于 Babel 的 npm 包最小化设置
阅读量:6510 次
发布时间:2019-06-24

本文共 1828 字,大约阅读时间需要 6 分钟。

翻译:疯狂的技术宅
原文:

本文首发微信公众号:jingchengyideng

欢迎关注,每天都给你推送新鲜的前端技术文章


本文描述了通过 Babel 生成 npm 包的最小设置。你可以在 GitHub 中看到案例 的设置。

GitHub:

1 核心结构

有两组文件:

  • 目录 esm/ 里有库的(还转换)实际源码。

    • package.json 中的 module 属性指向 esm/index.js
    • 目录 test/ 含有基于AVA的对 esm/ 中代码的测试。
  • 目录 cjs/ 有 ESM 文件的已转换版本,它们是 CommonJS 格式并支持在当前版本的 Node.js 环境下运行。

    • package.json 中的 main 属性指向 cjs/index.js

此结构支持两种用例:

  • Node.js 应用使用 cjs/ 中的文件。
  • Web应用(通过 webpack 等)使用 esm/ 中的文件。它们通过 将这些文件转换为其目标平台支持的功能集。 中描述了如何执行这个操作。

到此我们仅部分解决了如何填充可能缺少的库这个问题。接下来要彻底解决它

2 .gitignore

cjsnode_modules

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

3 .npmignore

node_modules

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

4 package.json

package.json 的主要部分

可以使用以下脚本:

"scripts": {  "build": "babel esm --out-dir cjs",  "prepublishOnly": "npm run build",  "test": "ava"},
  • build 用于生成 cjs/中的文件。
  • prepublishOnly 能够确保在我们发布到 npm 之前始终构建 cjs /
  • test 通过 AVA 运行测试。

因此,我们有以下依赖项(仅在开发时):

"devDependencies": {  "babel-cli": "^6.24.1",  "ava": "^0.21.0",  "babel-preset-env": "^1.5.1",  "babel-register": "^6.24.1"},
  • 单元测试需要ava
  • babel-cli 提供命令 babel
  • babel-register 让 AVA 通过 Babel 执行测试。
  • babel-preset-env 是 Babel 用于转换的预设。
"main": "./cjs/index.js","module": "./esm/index.js",
  • main 是 CommonJS 格式的包入口点(包括在Node.js上运行的普通模块)。
  • module是 ESM 格式的包入口点(包括webpack,取决于你如何设置它)。
  • 有关这两个属性的更多信息:“”。

配置 Babel

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

"babel": {  "presets": [    [      "env",      {        "targets": {          "node": "current"        }      }    ]  ]},

配置 AVA

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

"ava": {  "require": [    "babel-register"  ],  "babel": "inherit"}

5 结论

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

6 扩展阅读

  • 免费在线书籍: “”

欢迎继续阅读本专栏其它高赞文章:


本文首发微信公众号:jingchengyideng

欢迎扫描二维码关注公众号,每天都给你推送新鲜的前端技术文章

欢迎扫描二维码关注公众号,每天都给你推送新鲜的前端技术文章


转载地址:http://sgbfo.baihongyu.com/

你可能感兴趣的文章
Delphi下实现全屏快速找图找色 一、数据提取
查看>>
查询表字段信息
查看>>
关于机器学习的最佳科普文章:《从机器学习谈起》
查看>>
dxFlowChart运行时调出编辑器
查看>>
NET Framework 3.0 (WinFX) RTM发布
查看>>
图片拼接器
查看>>
中断小笔记
查看>>
C#委托、事件、消息(入门级)
查看>>
FreeBinary 格式说明
查看>>
使用Spring Cloud和Docker构建微服务
查看>>
NB-IoT的成功商用不是一蹴而就
查看>>
九州云实战人员为您揭秘成功部署OpenStack几大要点
查看>>
1.电子商务支付方式有哪些 2.比较不同支付方式的优势劣势
查看>>
医疗卫生系统被爆漏洞,7亿公民信息泄露……
查看>>
神秘函件引发的4G+与全网通的较量
查看>>
CloudCC:智能CRM究竟能否成为下一个行业风口?
查看>>
追求绿色数据中心
查看>>
Web开发初学指南
查看>>
探寻光存储没落的真正原因
查看>>
高通64位ARMv8系列服务器芯片商标命名:Centriq
查看>>