раздел 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
.