2017-01-16 93 views
0

如何使用package.json保存全局程序包的安裝?如何使用package.json保存全局包的安裝?

我找不到什麼好的解決辦法,但我這樣做象下面這樣:

package.json我增加了以下內容:

"scripts": { 
    "preinstall": "npm install babel babel-cli -g" 
}, 

它將運行和安裝之前在全球安裝上述程序包的所有依賴關係和devDependencies在package.json

但問題是,我無法找到,是在全球任何機器安裝的軟件包。

請幫助,如果有人有任何更好的解決方案。

+1

在安裝前安裝全局軟件包有什麼好的理由嗎? –

+0

但是沒有全局安裝,我無法在CLI中運行它們。 –

+1

請注意,[babel指令](https://babeljs.io/docs/usage/cli/)特別建議您不要在全局安裝它:「雖然您可以在您的計算機上全局安裝Babel CLI,但安裝要好得多它在本地按項目進行項目。「 – msanford

回答

2

強制全局安裝模塊是一種不好的做法。你可以把你的devDependencies babelbabel-cli,然後在您的NPM腳本中使用它們:

{ 
    "build" : "babel src -d build" 
}, 
"devDependencies": { 
    "babel-cli": "^6.18.0" 
} 
+0

但是沒有全局安裝,我不能在CLI中運行它們。 –

+1

你可以像我的答案一樣使用npm腳本。你可以通過調用''。/ node_modules/.bin/babel''而不是''babel''。當然,你可以在全球範圍內安裝它,但它應該成爲你污染開發者全球環境的一個選擇,而不是一個限制。 – MatthieuLemoine

+0

@NazmulBasher如果你想通過CLI使用,你需要通過'bin'連接設置。參考[這個庫]的設置(https://github.com/code-and-send/fol)。基本上,在'package.json'中設置'bin'如圖所示。 – revelt

1

如果您正在尋找通過CLI來運行你的包,你需要設置使用bin方法。

這是我的一個庫,例如,fol。它只能通過命令行運行。

在最起碼的設置,你會連線都mainbin到同一個JS文件,例如,將在package.json如下:

"main": "./bin/fol.js", 
    "bin": { 
    "fol": "./bin/fol.js" 
    }, 

然後,把文件放進bin文件夾相同的一致性,如果它在/bin/中,每個人都會認識到這是CLI應用程序的東西。