0

我有一个小的 npm 包,我正在节点 9 中编写它并使用所有最新和最强大的功能,如 async/await。我也在使用 babel,它允许我使用 ES6 模块导入和导出

Babel 还允许我将包转换为目标节点版本。我正在使用节点发布计划来定义包将支持的节点版本以及 babel 编译的目标。目前节点 4.x 仍处于维护 lts 阶段,所以我的目标是它。不幸的是,这意味着我使用的 JavaScript 中几乎所有的新特性都会被转译。

我想做的是将包转换为不同的目标(4.x、6.x、7.x、8.x 和 9.x 目前适用),并让 npm 在安装时间基于用户的节点版本。如果我没记错的话,我已经看到 apt-get 在不同版本的 Ubuntu 上执行此操作。

这可以用 npm 吗?

4

1 回答 1

0

我会在这里碰一个旧线程。一个不错的选择是使用两个单独的目录并根据process.version.

我将尝试这样做,scramjet并将在此过程中更新线程。我的计划是使用这样的index.js文件:

const ver = process.version.slice(1).split('.');
module.exports = require(+ver[0] > 8 && +ver[1] > 3 ? 'lib/index' : 'lib-6/index')

现在应该这样做,但由于我也有一些v10+目标代码(尤其是DataStream.from(async function*() { ... })其中有一些 ifs,我可能想稍后扩展它并使用一个表。

这里重要的是上面的代码运行一次(除非你清除 require 缓存)并且大部分时间在编译时运行,所以它对你的模块的影响最小。

于 2019-02-23T14:09:49.527 回答