我有一个小的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一起吗?
我会在这里碰到一个旧线程。一个很好的选择是使用两个单独的目录,并根据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我可能想稍后扩展它并使用表。
这里重要的是上面的代码运行一次(除非你清除需要缓存),并且主要是在编译时,因此它对你的模块的影响最小。