节点应用程序中有两个相同的npm包
所以这实际上是一个相当普遍的情况,这已经被多次解决了。
对于npm和纱包管理者的公开问题有一个封闭的问题。
第一个解决方案由NPM的作者在GH评论中提出:
以不同的名称发布单独的软件包。 它将需要一个特定的版本。
{ "name": "express3",
"version": "1.0.0",
"description":"Express version 3",
"dependencies": { "express":"3" } }
// index.js
module.exports = require('express')
在你的情况下,你会发布my-sdk-v1
和my-sdk-v2
。 从现在开始,您可以在一个项目中轻松安装两个版本的软件包,而不会发生冲突。
const mySDKLegacy = require('my-sdk-v1');
const mySDKModern = require('my-sdk-v2');
第二种方法提出了几乎相同的想法 - 使用git url:
{
"my-sdk-v1": "git://github.com/user/my-sdk#1.0.0",
"my-sdk-v2": "git://github.com/user/my-sdk#2.0.0"
}
与npm包不同,你可以自由选择任何你想要的名字! 真相的来源是git url。
后来npm-install-version
弹出。 正如你已经证明的那样,Buuut的使用有点有限。 因为它产生了一个子进程来执行一些命令并写入到tmp目录。 不是CLI最可靠的方式。
总结一下:你剩下的选择1和2.我会坚持第一个,因为github回购名称和标签可能会改变。
当你想要更改版本以更频繁地使用git url时,第二个选项更好。 假设您想为my-sdk-v1传统发布安全补丁。 将更容易引用一个git url,然后将my-sdk-v1.1
反复发布到npm。