NPM: как источник./ модули узлов/.папки bin?

у меня проблема с установкой npm

Я создал проект, скажем, проект a

cd ~/projectA
npm install sails

но команда sails не найдена после установки.

Я знаю, что он успешно установить в

7 ответов


Я могу дать вам грубое решение, которое работает для меня. Я просто экспортировал свой путь в свой .файл bashrc.

export PATH="$PATH:./node_modules/.bin"

Edit: прошло некоторое время, но я изменил свою стратегию, чтобы использовать сценарии npm вместо этого. В приведенном выше случае, пакет установки.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]

это позволяет избежать проблемы относительных путей, особенно если вы собираетесь использовать это в системе сборки, которая будет вызывать команду в подкаталогах.


использовать в командной строке как 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/sails ...)


немного более надежным является:

export PATH=$(npm bin):$PATH

вы можете запустить его, добавить в свой профиль оболочки или создать псевдоним, например:

alias snpm='export PATH=$(npm bin):$PATH'

Если вы идете по маршруту псевдонимов, обязательно используйте одинарные кавычки, чтобы задержать выполнение переменных!


Если вы не хотите испортить свой путь для запуска сценария npm, который не является глобальным , например, вы единственный, кто его использует, я бы лично рекомендовал использовать SH "псевдоним".

  1. npm установить (локально) ваш любимый пакет (json-diff здесь, например)

    cd ~ && npm install json-diff
    
  2. псевдоним (сохраните его в ваш ~/.xxxxrc file):

    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
}

затем я могу запустить исполняемый foo на