NPM本地依赖同仓子项目时,未执行其install脚本是否为预期行为?
问题解答
这是NPM的预期行为,并非Bug或配置问题。
当通过file:协议引入本地依赖时,NPM的处理逻辑和安装远程包存在差异:
- 对于本地依赖,NPM默认认为本地项目已经完成自身安装流程,因此不会执行其
install脚本。 - 但
preinstall和postinstall脚本仍会被触发,这是因为NPM在处理本地依赖的链接/复制过程中,会保留这两个钩子的执行逻辑,用于完成依赖引入前后的预处理或后处理操作。
如果需要让项目A的install脚本在被项目B依赖时执行,可参考两种方案:
- 将项目A的
install脚本逻辑迁移到postinstall中,利用这个会被触发的钩子完成所需操作。 - 在项目B的
postinstall脚本中手动调用项目A的install命令,比如在项目B的package.json脚本里添加cd ../A && npm run install。
内容的提问来源于stack exchange,提问作者BobtheMagicMoose
相关产品推荐
相关产品推荐

