Npm run <script>добавляет какое-либо свойство окружения? - PullRequest
0 голосов
/ 25 декабря 2018

У меня есть файл package.json, в котором у меня есть ключ "build" для объекта сценариев, который запускает мой веб-пакет.

Но вместо использования npm запускайте сборку, если я просто запускаю веб-пакет,Я получаю ошибку webpack is not recognised as internal or external command.Означает ли это, что npm run <script> устанавливает некоторую переменную env перед запуском webpack?

{
  "name": "test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "build": "webpack"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "webpack": "^4.28.2",
    "webpack-cli": "^3.1.2"
  }
}

Ответы [ 2 ]

0 голосов
/ 25 декабря 2018

Учитывая секцию scripts в вашем package.json, он не устанавливает никаких переменных ENV.Однако это можно сделать, если вы хотите.Например, чтобы удобно установить переменные ENV во всех операционных системах, вы можете использовать пакет, такой как cross-env (npm i --save-dev cross-env) и обновить раздел scripts до чего-то похожего на

{ "scripts": { "build": "cross-env NODE_ENV=production webpack --config config/webpack.config.js" } }

и доступ к ним в вашем конфигурационном файле (webpack.config.js) как process.env.NODE_ENV

В дополнение к этому, вы можете сделать запуск webpack вместо npm run build успешнымпутем установки пакетов webpack глобально (npm i -g webpack webpack-cli), но это не рекомендуется .Рекомендуется, чтобы необходимые пакеты устанавливались локально и зависели от версий пакетов, определенных в package.json.Даже если это не обязательно устанавливает переменные ENV, вам нужно сделать это явно, как указано выше, или использовать ваш предпочтительный подход.

По сути, ваш npm, который установлен глобально, заботится о npm run build который в свою очередь запускает команду webpack, которая связана с вашими локальными пакетами.Попытка запустить webpack непосредственно в вашем случае не удалась, так как пакеты веб-пакетов не установлены глобально.

0 голосов
/ 25 декабря 2018

Когда вы запускаете что-то из скрипта npm, он ищет двоичные файлы внутри node_modules/.bin.Вот почему, когда вы пытались запустить только веб-пакет, он потерпел неудачу, вы не указали, где он был, и ваша система не знала, где искать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...