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 "псевдоним".
-
npm установить (локально) ваш любимый пакет (json-diff здесь, например)
cd ~ && npm install json-diff
-
псевдоним (сохраните его в ваш ~/.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
на