Как установить только связанные с Babel devDependencies в package.json? - PullRequest
0 голосов
/ 29 ноября 2018

раздел devDependencies в моем проекте выглядит следующим образом:

  "devDependencies": {
    "@babel/cli": "^7.1.5",
    "@babel/core": "^7.1.6",
    "@babel/node": "^7.0.0",
    "@babel/preset-env": "^7.1.6",
    "@babel/register": "^7.0.0",
    "chai": "^4.2.0",
    "chai-http": "^4.2.0",
    "eslint": "^5.8.0",
    "eslint-config-airbnb-base": "^13.1.0",
    "eslint-plugin-import": "^2.14.0",
    "mocha": "^5.2.0",
    "nodemon": "^1.18.5"
  },

все они являются зависимостями для разработки.

Но @babel/cli, @babel/core, @babel/preset-node - единственные зависимости dev, которые нужны моей сборочной машине для compile источника ES6 / ES7 в dist, который предназначен для производства.

Моя сборочная машина - это ведомая машина jenkins, которая выполняет строительные работы только один раз, с опцией --rm, докерными контейнерами.Чтобы оптимизировать процесс DevOps, в этом задании компиляции все другие операции, даже производственные операции, не нужны.

Но, согласно npm / install doc , лучшая команда для меня -

npm install --only=development

, которая, я думаю, все еще заканчивается убийством.

Если бы я запустил npm install @babel/cli @babel/node @babel/preset-env, они были бы добавлены в раздел «зависимостей» в package.json.

Если бы я запустил npm install @babel/cli @babel/node @babel/preset-env -D, они переписали бы в раздел «devDependencies» в package.json.

В этих двух подходах npm не учитывает тег версии в package.json или package-lock.json.

Я также считал, что установка всех других devDeps, таких как chai, mocha, в необязательные зависимости , но это не то, что подразумевается в этом разделе, и нет команды для установки только необязательныхДепс с npm install.

1 Ответ

0 голосов
/ 30 ноября 2018

OK.Чтобы было ясно.Ваша проблема после NPM 5.8.0.Когда они меняют параметр --save по умолчанию.

Для вашей проблемы.Я думаю, что вы можете написать функцию bash что-то вроде:

function npm-temp-install {
    pkg=`cat package.json | jq -r ".devDependencies.$1" | sed "s/^/$1@/"`
    npm install $pkg -D
}

Затем вы можете запустить npm-temp-install @babel/cli, чтобы установить пакет с конкретной версией, указанной в вашем devDependencies.

ДляВаш первый комментарий: я думаю, что вы можете использовать npx для запуска nodemon.Со своего сайта .Он сказал, что поможет вам загрузить пакет, если команда не найдена в node_modules/.bin.И это не изменит package.json или package-lock.json.

...