我有一个模块,我想让用户决定他想要使用哪个版本,纯粹用javascript写的或者用C编写的本机(所以他需要先编译它)。
npm install命令没有任何选项,但你可以选择版本,这样我就可以创建两个分支:js的v1.x和本地的v2.x.
如果用户想要安装用javascript编写的模块:
"dependencies": {
"my-module": "1.x"
}
如果用户想要安装本机模块:
"dependencies": {
"my-module": "2.x"
}
是否有其他更好的方法来发布具有相同模块名称的纯模块和本机模块?
答案 0 :(得分:1)
好的,这不是你想要的,但是这里......
您正在尝试找到与Gentoo Use Flags等效的NPM,该NPM不存在。你可以做的最接近的事情就是发布你的纯JS版本,让用户直接链接到git repo,而不是他们想要使用原生版本。
在package.json
:
"dependencies": { "mymodule": "1.2.3" // js version } "dependencies": { "mymodule": "http://github.com/mymodule-native" // native version }
您的用户不必更改require
以在版本之间切换,只需在package.json中单行。
另一种解决方案是尝试构建本机版本,如果失败则不会引发错误。然后,您可以在模块中进行简单设置,以在实现之间切换。您可以查看此other stackoverflow thread。