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

问题描述 投票:0回答:1

我有一个小的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一起吗?

node.js npm npm-publish
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我可能想稍后扩展它并使用表。

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

© www.soinside.com 2019 - 2024. All rights reserved.