如何使npm不依赖于依赖关系
问题描述:
我使用依赖于节点模块B的节点模块A.节点模块A依赖于版本高于2.0.1的B。但是,有2.0.5版本,这是最新版本。 2.0.5版本与我的程序不兼容,我想获得特定版本2.0.1而不是2.0.5。当我做npm安装时,我得到2.0.5版本。有没有什么办法可以让npm install获得最低版本的软件包而不是最高?如何使npm不依赖于依赖关系
编辑:我用yarn而不是npm,它做了我想要的。
答
进入node_modules
文件夹中依赖项A的package.json
文件,并确保它指定依赖项B是版本2.0.1。
此运行npm update
答
我不认为这是一个很好的办法做到这一点之后。您可以在项目文件夹中运行npm shrinkwrap
,然后转至npm-shrinkwrap.json
并搜索程序包B
并将其版本更改为2.0.1
。 npm shrinkwrap
所做的是锁定相关版本,因此,无论何时更新其他软件包,并且仍然与包A
和B
有相同问题,您需要再次运行npm shrinkwrap
。 当包B
解决了版本2.0.5
的问题时,您可以删除npm-shrinkwrap.json
。
我知道我能做到这样,但下一次我会做NPM安装在我的整个项目(当我将采取一个新的克隆,从git仓库),我会得到2.0.5再次版本。我想知道是否有一个解决方案没有修改其他项目的package.json。 –
你可以尝试添加这个特定的依赖到你的repo(仍然确保你.gitignore剩下的node_modules文件夹),这样你总是可以获得这个特定依赖的相同版本,即使你克隆到一个新的位置并执行'npm install' – James