簡體   English   中英

NPM:如何獲取 ./node_modules/.bin 文件夾?

[英]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 “別名”。

  1. npm install (locally) 你心愛的包(例如這里的json-diff)

     cd ~ && npm install json-diff
  2. 別名(將其保存在您的 ~/.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

與NPM 5.2+可能的解決方法使用npx命令。

npx sails new test-project

有關類似用例和優雅解決方案,請參閱問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM