spa*_*ted 5 dependencies module node.js npm
我有3个node.js模块A,B和C。所有的人都私有git repos。A依赖于B依赖C。Git克隆A和执行npm install就像魅力一样。
但是,当在模块上编码时A,我也想在B(和C)上进行工作。后两个也是git clone的。并npm link ../pathto/B运作良好。
而作为B依靠C,npm link把“安装”照顾C到B/node_modules/C。它是一个静态文件克隆,供所使用B。
因此,执行时npm link ../pathto/C,结果为A/node_modules/C(是符号链接)。
但是,多数民众赞成在这个问题上,B将使用它的静态副本C,而不是我链接到的内容A/node_modules/C。
A/
...
node_modules/
B -> B/
C -> C/
B/
...
node_modules/
C/
...
C/
...
Run Code Online (Sandbox Code Playgroud)
有谁有解决此问题的想法?
vel*_*lis 21
对我来说,一个简单的
npm link A B C
Run Code Online (Sandbox Code Playgroud)
作品。使用 npm 7.5.2
当然,包必须事先暴露出来,所以
sudo npm link
Run Code Online (Sandbox Code Playgroud)
必须在每个包的目录中运行。
这确实需要一些技巧package.json:在安装新软件包期间,必须隐藏对本地模块的依赖关系(或者可能指定为路径,但我对此还没有足够的知识)。之后,需要再次链接本地包。它们还必须始终使用一个命令进行链接,否则 npm 将简单地删除丢失的命令。
2021年11月8日更新:
我正在使用 Vue,上述解决方案导致我的构建中出现了多个 Vue 实例。似乎每个链接的模块都忽略了导入模块的“正常”方式,并分别进行了自己的导入。
所以现在我npm pack在库中使用并指定使用项目作为文件依赖项的依赖项"my_package_name": "file:/tmp/my_package_name-x.y.z.tgz",
我解决了它,或者至少我让它工作了。
npm install在我这样做之后(_node_modules 是我的本地模块所在npm link _node_modules/*的目录)。BC
到目前为止,B已按计划满足要求。但仍然B加载其静态C引用。
然后我就简单cd地_node_modules/B/node_modules执行npm link C。
| 归档时间: |
|
| 查看次数: |
1530 次 |
| 最近记录: |