我正在尝试发布一个依赖于未发布包的包,该包需要保持未发布状态。我以为我有一个解决方案:
在开发中,相对路径被硬编码在 package.json 中:
{
...
"dependencies": {
"@company/dependency": "file:../lib"
},
"bundledDependencies": {
"@company/dependency"
}
}
在部署管道中,依赖项是npm pack
'd,然后将 tar 写入上述包:
"@company/dependency": "file:../lib/company-dependency-version.tgz"
然后发布该模块。直接安装时,在消费应用程序中似乎可以正常工作:npm install @company/published-module
,但是npm i
运行时,出现以下错误:
$ npm install
npm ERR! code ENOENT
npm ERR! syscall stat
npm ERR! path C:\...\node_modules\lib\company-dependency-version.tgz
npm ERR! errno -4058
npm ERR! enoent ENOENT: no such file or directory, stat 'C:\...\node_modules\lib\company-dependency-version.tgz'
npm ERR! enoent This is related to npm not being able to find a file.
似乎当在 npm install 中检查包时,它会沿着 node_modules 中模块所在位置的相对路径并查找 tar 文件,然后放弃npm install
. 如果我跳过 tar,它仍会根据此处提供的相对路径查找模块。
我已经看到有关使用 bundledDependencies 与本地模块一起发布的人的问题,但我还没有看到这个问题出现。我在这里想念什么?