发布npm包的不同版本以定位不同版本的节点

时间:2017-11-28 09:02:38

标签: node.js npm npm-publish

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

Babel还允许我将包转换为目标节点版本。我正在使用node release schedule来定义程序包将支持哪个版本的节点以及用于babel编译的目标。目前节点4.x仍处于维护阶段,因此我将其定位。不幸的是,这意味着我正在使用的JavaScript中的几乎所有新功能都会被转换。

我想要做的是将包转换为不同的目标(当前适用4.x,6.x,7.x,8.x和9.x)并让npm选择适当的构建安装时的程序包基于用户的节点版本。如果我没弄错的话,我已经看到apt-get使用不同版本的Ubuntu来做这件事。

这可以用npm吗?

1 个答案:

答案 0 :(得分: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*() { ... }),其中包含一些if,我可能想稍后对其进行扩展并使用表。

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