我有NPM安裝問題NPM:如何獲取./node_modules/.bin文件夾?
我創建了一個項目說項目中
cd ~/projectA
npm install sails
但帆命令不安裝後發現的。
我知道它已成功安裝在~/projectA/node_modules
目錄中。 但可執行文件無法找到。而且我知道它已經安裝了~/projectA/node_modules/.bin
我怎樣才能在我進入這個projectA文件夾時自動獲取.bin文件?
我做錯了什麼?
我有NPM安裝問題NPM:如何獲取./node_modules/.bin文件夾?
我創建了一個項目說項目中
cd ~/projectA
npm install sails
但帆命令不安裝後發現的。
我知道它已成功安裝在~/projectA/node_modules
目錄中。 但可執行文件無法找到。而且我知道它已經安裝了~/projectA/node_modules/.bin
我怎樣才能在我進入這個projectA文件夾時自動獲取.bin文件?
我做錯了什麼?
我可以給你一個不雅的解決方案,這是爲我工作。我剛剛在我的.bashrc文件中導出了我的路徑。
export PATH="$PATH:./node_modules/.bin"
編輯:這已經有一段時間了,但我改變了我的策略來改用npm腳本。在上述情況下,設置的package.json如下:
"scripts": {
"sails": "sails"
}
,你可以接着用
npm run sails
或帶參數的
npm run sails -- <args>
我會把node_modules/.bin放在第一位:'export PATH = 「./node_modules/.bin:$PATH」 –
Upvote使用npm腳本,並提示如何使用參數 – logan
要使用像sails generate foo
這樣的命令行,您需要全局安裝npm模塊。
npm install -g sails
您還可以使用路徑倉的命令,如果你不想安裝全球:
./node_modules/sails/bin/sails.js generate foo
爲帆官方指令運行(https://github.com/balderdashy/sails)建議
要使用命令行工具安裝最新穩定版本:
sudo npm -g install sails
這在全球安裝,並增加了像/usr/local/bin
的目錄應該在你的$PATH
。
但是,爲了回答關於二進制文件的位置,一般的問題,如果你在本地安裝,他們應放置在./node_modules/.bin
目錄(所以運行./node_modules/.bin/sails ...
)
您應該使用npm bin
命令來獲得一個絕對路徑的當前節點bin目錄。
例如:
➤ lessc
bash: lessc: command not found
➤ npm bin
/home/brice/[...]/node_modules/.bin
➤ export PATH=$(npm bin):$PATH
➤ lessc --version
lessc 1.7.3 (Less Compiler) [JavaScript]
這避免了相對路徑的問題,特別是如果你打算在構建系統將在子目錄中調用命令來使用這個。
有點更強大的是:
export PATH=$(npm bin):$PATH
您可以運行它,將它添加到你的shell配置文件或創建類似的別名:
alias snpm='export PATH=$(npm bin):$PATH'
如果你去的別名路線,請務必使用單引號,以便延遲變量的執行!
感謝您的幫助! –
如果您不喜歡弄錯PATH來運行非全局npm腳本 - 例如你是唯一使用它的人,我個人推薦使用sh別名。
NPM安裝(本地)您心愛的包(JSON-DIFF這裏,例如)
cd ~ && npm install json-diff
別名(它保存在你的〜/ .xxxxrc文件):
alias diffj "\`npm bin\`/json-diff !*"
然後,版本比較2 JSON的:
diffj old.json new.json
在我~/.bashrc
,我有以下幾點:
function nbin {
local dir;
dir=$(npm bin)
if [ -d "$dir" ]; then
(# subshell to not change this shell's $PATH
PATH=$dir:$PATH
eval "[email protected]"
)
else
echo "\"$dir\" is not an npm binary directory." >&1
return 1
fi
}
然後我可以在.bin
目錄中運行可執行foo
:
nbin foo
你確定它是在'〜/了projectA安裝/ node_modules/.bin'而不是'〜/ projectA/node_modules/sails/bin'而不是?你是什麼意思的來源? – verybadalloc
@verybadalloc源代碼像unix dot http://en.wikipedia.org/wiki/Dot_(Unix)和http://superuser.com/a/46146 – SHernandez
可能的重複[如何在節點上使用本地安裝的軟件包\ _modules?](http://stackoverflow.com/questions/9679932/how-to-use-package-installed-locally-in-node-modules) – mightyiam