2017-08-25 189 views
0

我在使用本地模块的npm时遇到问题。我的项目的结构是这样的: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,并从node_modules使用local_module。但是,local_module需要gulp才能运行预发布步骤,并且在主项目中运行npm install时,它不会安装local_module的依赖关系,因此未安装gulp,因此无法执行预发布步骤。

这样的几个问题已经被问到,例如NPM doesn't install module dependencies,但很多都是旧的,并且有太多的npm版本,我无法得到明确的解决方案。

如何在预发布步骤之前让npm安装local_module的依赖关系?我尝试为主项目添加一个预安装步骤,例如

"preinstall": "cd local_module && npm install" 

但似乎NPM试图运行预安装为主营项目之前运行的local_module的prepublish一步。我想要一个解决方案,它将在一个npm install步骤中执行此操作,而不是在此之前执行单独的步骤,以在本地模块中执行npm install

回答

0

我发现了一个解决方案,可以在不久的将来为我工作。我改变local_modulepackage.json到:

{ 
    "scripts": { 
     "prepublish": "npm install --ignore-scripts && gulp release" 
    }, 
    "devDependencies": { 
     "gulp": "..." 
    } 
} 

npm install从主项目运行时,prepublish步骤是首先运行于local_module,所以我强迫prepublish也做的安装,使一饮而尽可用做实际预发布步骤。但这并不理想。