2015-04-22 66 views
1

目前,如果您使用package.json文件來管理項目的依賴項(無論它是什麼項目,可能是ruby,php,python或js應用程序),默認情況下,一切安裝在./node_modules下。NPM:更改節點模塊的`bin`輸出目錄

當某些依賴包含要保存的二進制文件時,它們將安裝在./node_modules/.bin之下。

我需要的是一個功能,允許我更改./node_modules/.bin目錄中的./bin

簡單的例子:

一個PHP/Symfony的應用程序有一個./vendor dir來作曲的依賴,和所有的二進制文件都保存在./bin,得益於composer.jsonconfig: { bin-dir: bin }選項。

但是,如果我想使用Gulp來管理我的資產,我創建了一個package.json文件,需要我所有的依賴關係,然後運行npm install。 然後,我的願望是運行bin/gulp執行gulp,但實際上我必須運行node_modules/.bin/gulp,這不如bin/gulp友好。

我已經看過了關於browsenpm.orgdocs.npmjs.com的package.json示例/指南,但它們都不起作用,因爲它們在這裏定義您自己的項目的二進制文件。但我沒有任何二進制文件,因爲我想使用來自其他庫的二進制文件。

有沒有用NodeJS/NPM的選項?

回答

1

您可能會考慮將gulp任務添加到您的package.json

// package.json 
{ 
    "scripts": { 
    "build-templates": "gulp build-templates", 
    "minify-js": "gulp minify-js" 
    } 
} 

您可以通過簡單運行以下運行package.json指定的任何腳本:

$ NPM運行構建的模板
$ NPM運行縮小-JS

你得到的理念。您可以在字符串內部使用gulp命令,而不需要執行./node_modules/.bin/gulp,因爲npm足夠聰明,可以將來自./node_modules/.bin/的所有腳本放入該腳本執行的路徑中。

+0

這不是「解決方案」,但它是「一個」解決方案,我不認爲它會起作用。 我們可以將參數傳遞給這些腳本嗎?如果是這樣,我們可以這樣做: '{「scripts」:{「gulp」:「gulp」}}' –

+0

不幸的是我不認爲你可以將多個參數傳遞給'npm run'。 – Chev