2017-08-25 210 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也做的安裝,使一飲而盡可用做實際預發佈步驟。但這並不理想。