Подтвердить что ты не робот

NPM: как создать. /node_modules/.bin папку?

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

Я создал проект, например, проект A

cd ~/projectA
npm install sails

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

Я знаю, что он успешно устанавливается в каталог ~/projectA/node_modules. но исполняемый файл не может быть получен. И я знаю, что он установлен ~/projectA/node_modules/.bin

Как я могу автоматически генерировать .bin всякий раз, когда я вхожу в эту папку projectA?

Я сделал что-то не так?

4b9b3361

Ответ 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