节点应用程序中有两个相同的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-v1my-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。

链接地址: http://www.djcxy.com/p/96225.html

上一篇: Two versions of same npm package in Node application

下一篇: Optgroup breaks special characters