Все пакеты npm, не установленные глобально, не могут быть выполнены напрямую - PullRequest
0 голосов
/ 08 июля 2019

Симптом:

Я не могу выполнить пакеты npm напрямую, которые не установлены глобально. Но я могу выполнить это npm scripts. Как это исправить?

Например: Я установил gulp под проект:

npm install gulp --save-dev

Тогда я пытаюсь выполнить это

gulp
zsh: command not found: gulp

Но если я добавлю npm script к package.json:

  "scripts": {
    "test": "mocha --require intelli-espower-loader && gulp test",
    "start": "gulp"
  },

Затем запустите

npm start

Может выполняться без проблем.

P.S. Та же проблема с пакетом mocha, я не могу выполнить mocha напрямую, но могу выполнить npm test без проблем.

Требуется помощь:

Что я могу сделать, чтобы решить эту проблему?

Примечание:

Я не говорю, что хочу выполнить их глобально, я просто хочу выполнить их в рамках проекта.

Я не знаю, где что-то не так, но они исполняются не так давно, просто не работают в последнее время!

Ответы [ 4 ]

2 голосов
/ 08 июля 2019

В дополнение к ответу @ Ion: вам может потребоваться добавить путь к переменным среды. В ОС Windows это будет %AppData%\npm. Для пакетов, установленных локально, вы можете запускать их как

.\node_modules\.bin\gulp

1 голос
/ 08 июля 2019

Если вы хотите выполнить их глобально, установите с флагом -g

npm install gulp -g

Для прямого запуска вы также можете сделать ./node_modules/.bin/gulp

0 голосов
/ 08 июля 2019

У вас есть два варианта:

  1. Установка исполняемых модулей по всему миру:

    npm install -g gulp
    

    Это хорошо, если вы часто используете этот инструмент (для разных проектов). В частности, для gulp глобально установленный gulp также проверит, установлен ли в проекте собственный gulp (в node_modules), и запустит эту версию gulp. Это означает, что каждый проект может иметь свою собственную версию gulp. Но не все инструменты имеют эту функцию.

  2. Использование npx:

    npx gulp
    

    Более новые версии npm поставляются с командой npx, которая будет искать в каталоге вашего проекта node_modules, чтобы найти модуль для выполнения. Это означает, что вам не нужно устанавливать специальные инструменты проекта по всему миру. Помимо формы, позволяющей избежать глобальных установок команд (что может или не может быть проблемой безопасности), она также позволяет устанавливать специфичные для проекта версии инструментов.

    Если в вашей установке npm нет npx, вы можете установить его из самого npm:

    npm install -g npx
    
0 голосов
/ 08 июля 2019

Это связано с тем, что глобально не установленный пакет не создает ссылку в корневой папке node_modules.Если вы хотите специально использовать локально установленную версию для глобального запуска на терминале, перейдите к переменным окружения и задайте путь к ./node_modules/gulp/bin/gulp.js или, в качестве альтернативы, настройте свой npm для использования упомянутого местоположения в качестве команды и выполните node_modules/.bin/gulp

...