NPM: как создать. /node_modules/.bin папку?
У меня проблема с установкой npm
Я создал проект, например, проект A
cd ~/projectA
npm install sails
но команда sails не найдена после установки.
Я знаю, что он успешно устанавливается в каталог ~/projectA/node_modules
.
но исполняемый файл не может быть получен. И я знаю, что он установлен ~/projectA/node_modules/.bin
Как я могу автоматически генерировать .bin всякий раз, когда я вхожу в эту папку projectA?
Я сделал что-то не так?
Ответы
Ответ 1
Я могу дать вам неэлегантное решение, которое работает для меня. Я просто экспортировал свой путь в мой .bashrc файл.
export PATH="$PATH:./node_modules/.bin"
Изменить: Это было время, но я поменял свою стратегию на использование сценариев npm. В приведенном выше случае установите package.json следующим образом:
"scripts": {
"sails": "sails"
}
Что вы можете запустить с помощью
npm run sails
или с аргументами
npm run sails -- <args>
Ответ 2
Вы должны использовать команду npm bin
, чтобы получить абсолютный путь к вашему текущему каталогу bin node.
Например:
➤ 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]
Это позволяет избежать проблемы относительных путей, особенно если вы собираетесь использовать это в системе сборки, которая будет вызывать команду в подкаталогах.
Ответ 3
Для использования в командной строке, например sails generate foo
, вам нужно будет установить модуль npm по всему миру.
npm install -g sails
Вы также можете использовать путь к бункеру в команде, если вы не хотите устанавливать глобально:
./node_modules/sails/bin/sails.js generate foo
Ответ 4
Официальные инструкции для парусов (https://github.com/balderdashy/sails) советует
Чтобы установить последнюю стабильную версию с помощью средства командной строки:
sudo npm -g install sails
Эта установка устанавливается глобально и добавляется в каталог типа /usr/local/bin
, который должен находиться в вашем $PATH
.
Но чтобы ответить на общий вопрос о местонахождении двоичных файлов, если вы устанавливаете локально, их следует поместить в каталог ./node_modules/.bin
(так что запустите ./node_modules/.bin/sails ...
)
Ответ 5
Чуть более надежным является:
export PATH=$(npm bin):$PATH
Вы можете запустить его, добавить в свой профиль оболочки или создать псевдоним вроде:
alias snpm='export PATH=$(npm bin):$PATH'
Если вы выполняете маршрут псевдонимов, обязательно используйте одинарные кавычки, чтобы задерживать выполнение переменных!
Ответ 6
Если вам не нравится испортить ваш PATH для запуска npm script, который не является глобальным - например. вы единственный, кто его использует, - я лично рекомендовал бы использовать псевдоним sh.
-
npm установить (локально) ваш любимый пакет (json-diff здесь, например)
cd ~ && npm install json-diff
-
alias it (сохраните его в файле ~/.xxxxrc):
alias diffj "\`npm bin\`/json-diff !*"
Тогда для различения 2 json's:
diffj old.json new.json
Ответ 7
В моем ~/.bashrc
у меня есть следующее:
function nbin {
local dir;
dir=$(npm bin)
if [ -d "$dir" ]; then
( # subshell to not change this shell $PATH
PATH=$dir:$PATH
eval "[email protected]"
)
else
echo "\"$dir\" is not an npm binary directory." >&1
return 1
fi
}
Затем я могу запустить исполняемый файл foo
в каталоге .bin
следующим образом:
nbin foo