[英]How do you prevent install of "devDependencies" NPM modules for Node.js (package.json)?
[英]How to install only babel related devDependencies in package.json?
我項目中的 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
是我的構建機器將 ES6/ES7 源代碼compile
為用於生產的 dist 所需的唯一開發依賴項。
我的建築機器是一台 jenkins slave,它只運行一次建築作業,帶有 --rm 選項,docker 容器。 為了優化 DevOps 流程,在這個編譯工作中,所有其他 deps,甚至生產 deps 都不是必需的。
但是根據npm/install doc ,對我來說最好的命令是
npm install --only=development
我認為還是結束了殺戮。
如果我運行npm install @babel/cli @babel/node @babel/preset-env
,它們將被添加到 package.json 的“dependencies”部分。
如果我運行npm install @babel/cli @babel/node @babel/preset-env -D
,它們會覆蓋 package.json 中的“devDependencies”部分。
在這兩種方法中,npm 不會支持 package.json 或 package-lock.json 中的版本標簽。
我還考慮過將所有其他 devDeps(例如 chai、mocha)放到optionalDependencies 中,但這不是本節的意思,並且沒有命令可以使用npm install
僅可選的 deps。
好的。 要清楚。 您的問題是在 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
。
刪除 package-lock.json 並運行
npm install @babel/cli @babel/node @babel/preset-env -D
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.