[英]Install node_modules to vendor
如何在本地為每個項目安裝npm模塊到vendor/node_modules
,並使package.json
文件看到它們。
我不想將package.json移動到vendor文件夾
我有涼亭和.bowerrc
我指定了bower_components
路徑 - 這非常簡單。
我怎么能用npm做到這一點?
我已經閱讀了文檔,npmrc文檔,這里的一些問題,Google搜索,浪費了一個多小時 - 仍然沒有運氣。 這對於如此簡單的任務來說非常困難。
我不關心弊端,最后告訴我該怎么做。
由於似乎沒有內置的方法安裝到任意子文件夾中的node_modules
文件夾這一事實讓我感到沮喪,因此我想出了一個使用以下兩個腳本的偷偷摸摸的解決方案:
preinstall.js
var fs = require("fs");
try
{
fs.mkdirSync("./app/node_modules/");
}
catch(e)
{
}
try
{
if(process.platform.indexOf("win32") !== -1)
{
fs.symlinkSync("./app/node_modules/","./node_modules/","junction");
}
else
{
fs.symlinkSync("./app/node_modules/","./node_modules","dir");
}
}
catch(e){}
postinstall.js
var fs = require("fs");
try
{
if(process.platform.indexOf("win32") !== -1)
{
fs.unlinkSync("./node_modules/");
}
else
{
fs.unlinkSync("./node_modules");
}
}
catch(e){}
您需要做的就是將它們添加到scripts
選項中,在package.json
文件中使用它們:
"scripts": {
"preinstall": "node preinstall.js",
"postinstall": "node postinstall.js"
},
所以,最大的問題是:它做了什么?
好吧,當你調用npm install
, preinstall.js
腳本將觸發,這會在你想要的子文件夾中創建一個node_modules
。 然后它從npm
期望的node_modules
創建一個symlink
或(Windows中的shortcut
)到真實的node_modules
。
然后npm
安裝所有依賴項。
最后,一旦安裝了所有依賴項,就會觸發postinstall.js
腳本,刪除symlink
!
這是一個方便的要點 ,你需要的一切。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.