[英]NPM : how to source ./node_modules/.bin folder?
我在 npm 安裝上遇到問題
我創建了一個項目,比如項目 A
cd ~/projectA
npm install sails
但是安裝后沒有找到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>
您應該使用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'
如果你走別名路線,一定要使用單引號,這樣它會延遲變量的執行!
要在命令行上使用,比如sails generate foo
你需要全局安裝npm 模塊。
npm install -g sails
如果您不想全局安裝,也可以在命令中使用 bin 的路徑:
./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 腳本時弄亂 PATH —— 例如,您是唯一使用它的人 ——,我個人建議使用 sh “別名”。
npm install (locally) 你心愛的包(例如這里的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 "$@"
)
else
echo "\"$dir\" is not an npm binary directory." >&1
return 1
fi
}
然后我可以在.bin
目錄中運行可執行文件foo
為:
nbin foo
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.