我有一个遗留项目,它依赖于特定版本的npm包,该软件包通过依赖链依赖于特定npm包的幻影at,其二进制文件已不在注册位置在线。这破坏了项目的构建。
更新包版本不是一个选项。
我可以通过手动获取所需版本的幻影并将其放到我的系统下载文件夹中来欺骗npm,但这是一个解决办法,我想要一个更干净的修复,最好是配置脚本中的一些东西。
我是否可以在我的项目的package.json或.npmrc文件中强制npm为包@某些版本使用另一个url,每次为该项目运行"npm“时?
发布于 2017-07-11 14:21:07
我发现这是可能的使用npm-收缩包装(https://docs.npmjs.com/files/package-locks).基本上,除了package.json之外,您还可以向项目中添加一个npm缩缩包装. your文件。在收缩包文件中,您可以覆盖package.json中列出的任何特定包--在该包的依赖链中的任何位置,您都可以指定一个从该包获取依赖包的URL。
{
"name": "MyProject",
"dependencies": {
"A" : {
"version" :"1.2.1",
"dependencies": {
"B": {
"version": "https://myBForkUrl.git"
}
}
}
}如果MyProject依赖于包A (这反过来依赖于B ),但是B没有维护,并且有一个关键的bug,我可以滚动自己的B分支,修复错误并将其保存在https://myBForkUrl.git上,而无需分叉A。根据NPM的文档,这种覆盖看起来可以在必要时嵌套得很深。
发布于 2016-12-08 12:50:04
一个可能的解决方案是将包上传到github,并按照NPM文档中的https://docs.npmjs.com/files/package.json#urls-as-dependencies进行处理。
https://stackoverflow.com/questions/41039789
复制相似问题