我项目中的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
是我的构建机器将{6} {1}}的ES6 / ES7源分发到生产环境中唯一需要的dev依赖。 / p>
我的建筑机器是jenkins从属设备,仅使用--rm选项和docker容器一次运行建筑工作。为了优化DevOps流程,在此编译工作中,不需要所有其他部门,甚至是生产部门。
但是根据npm/install doc,对我来说最好的命令是
compile
我认为仍然是要杀人。
如果我运行npm install --only=development
,它们将被添加到package.json的“ dependencies”部分。
如果我运行npm install @babel/cli @babel/node @babel/preset-env
,它们将覆盖package.json中的“ devDependencies”部分。
在这两种方法中,npm不会接受package.json或package-lock.json中的version标签。
我还考虑过将所有其他devDeps(例如chai,mocha)放入optionalDependencies,但这并不是本节的意思,并且没有命令安装带有{{1 }}。
答案 0 :(得分:0)
好。要清楚。您的问题是在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。来自其website。它说,如果在node_modules/.bin
中找不到命令,它将帮助您下载软件包。并且不会更改package.json
或package-lock.json
。
答案 1 :(得分:0)
删除package-lock.json并运行
npm install @babel/cli @babel/node @babel/preset-env -D