我在使用本地模块的npm时遇到了麻烦。我项目的结构如下:
package.json
local_module/
- package.json
- gulpfile.json
gulpfile.js
主要项目package.json
基本上是:
{
"dependencies": {
"local_module": "file:local_module"
},
"devDependencies": {
"gulp": "..."
}
}
本地模块的package.json
基本上是:
{
"scripts": {
"prepublish": "gulp release"
},
"devDependencies": {
"gulp": "..."
}
}
我的目的是保持我的项目模块化,保持local_module
作为自己的包,用作主项目的依赖项。我想在主项目中运行npm install
并使用local_module
中的node_modules
。但是,local_module
需要安装gulp
来运行预发布步骤,并且当从主项目运行npm install
时,它不会安装local_module
的依赖项,因此gulp isn&已安装,因此无法执行预先发布步骤。
有人问过像这样的几个问题,比如NPM doesn't install module dependencies,但很多问题已经过时了,而且有很多版本的npm,我无法得到明确的解决方案。
如何在预发布步骤之前让npm安装local_module
的依赖项?我尝试为主项目添加预安装步骤,例如
"preinstall": "cd local_module && npm install"
但似乎npm尝试在运行主项目的预安装之前运行local_module
的预发布步骤。我想要一个在npm install
步骤中执行此操作的解决方案,而不是在此之前单独执行本地模块中的npm install
。
答案 0 :(得分:0)
我找到了一个在不久的将来对我有用的解决方案。我将local_module
的{{1}}更改为:
package.json
从主项目运行{
"scripts": {
"prepublish": "npm install --ignore-scripts && gulp release"
},
"devDependencies": {
"gulp": "..."
}
}
时,预先发布步骤首先在npm install
中运行,因此我强制预先发布以进行安装,以便gulp可用于执行实际的预发布步骤。然而,这并不理想。