簡體   English   中英

如何在 package.json 中只安裝與 babel 相關的 devDependencies?

[英]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.jsonpackage-lock.json

刪除 package-lock.json 並運行

npm install @babel/cli @babel/node @babel/preset-env -D

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM