Как использовать пакет, установленный локально в node_modules? - PullRequest
415 голосов
/ 13 марта 2012

Как использовать локальную версию модуля в node.js. Например, в моем приложении я установил coffee-script:

npm install coffee-script

Это устанавливает его в ./node_modules, а команда coffee находится в ./node_modules/.bin/coffee. Есть ли способ выполнить эту команду, когда я нахожусь в главной папке моего проекта? Я думаю, я ищу что-то похожее на bundle exec в bundler. По сути, я бы хотел указать версию кофе-скрипта, которую должны использовать все участники проекта.

Я знаю, что могу добавить флаг -g, чтобы установить его глобально, чтобы кофе работал везде, но что, если бы я хотел иметь разные версии кофе для проекта?

Ответы [ 22 ]

1 голос
/ 19 декабря 2016

Добавьте этот скрипт к вашему .bashrc.Тогда вы можете позвонить coffee или что-нибудь локально.Это удобно для вашего ноутбука, но не используйте его на своем сервере.

DEFAULT_PATH=$PATH;

add_local_node_modules_to_path(){
  NODE_MODULES='./node_modules/.bin';
  if [ -d $NODE_MODULES ]; then
    PATH=$DEFAULT_PATH:$NODE_MODULES;
  else
    PATH=$DEFAULT_PATH;
  fi
}

cd () {
  builtin cd "$@";
  add_local_node_modules_to_path;
}

add_local_node_modules_to_path;

note : этот сценарий создает псевдоним команды cd и после каждого вызова cd проверяет node_modules/.bin и добавляет его к вашему $PATH.

note2 : вы можете изменить третью строку на NODE_MODULES=$(npm bin);.Но это сделает команду cd слишком медленной.

0 голосов
/ 13 марта 2012

Включите кофе-скрипт в package.json с конкретной версией, необходимой для каждого проекта, обычно так:

"dependencies":{
  "coffee-script": ">= 1.2.0"

Затем запустите npm install для установки зависимостей в каждом проекте.Это установит указанную версию coffee-script, которая будет доступна локально для каждого проекта.

...