拥有
yarn outdated
信息量很大,但我想避免逐个包地运行 yarn upgrade
。
从yarn的文档中,据说仅不带参数的
yarn upgrade
即可升级所有依赖项,但我的项目的package.json
和yarn outdated
没有变化,并且显示与以前相同的软件包版本。
是否有一些命令或参数会破坏我的所有依赖项?
如果没有,是否会以某种方式阻止这种做法?
将所有软件包升级到最新版本
yarn upgrade --latest
您可以使用
yarn upgrade
将软件包更新到 package.json 中指定的最新版本,无需任何参数。
这取自docs:
yarn upgrade
此命令将所有依赖项更新到最新版本 package.json 文件中指定的版本范围。纱线锁 文件也将被重新创建。
这只会更新 package.json 中允许升级的软件包,例如使用
^
(例如,^0.13.0
将更新到版本 0.14.0
(如果存在))。这不会更新您的 package.json 文件,但会更新yarn.lock。
如果您想将依赖项更新到最新版本,您可以使用包
npm-check-updates
它将更新您的 package.json:
$ yarn global add npm-check-updates
$ npm-check-updates -u
$ yarn upgrade
只需运行
yarn upgrade-interactive --latest
并使用空格按钮选择要更新的软件包,然后按 Enter 进行更新。
针对 Yarn v2 及以上版本用户的解答。
导入
interactive-tools
插件:
$ yarn plugin import interactive-tools
然后像这样运行:
$ yarn upgrade-interactive
请注意,这也会修改您的
package.json
中的 semvers。
如果您的依赖项使用范围版本(
"^x.x.x"
、"~x.x.x"
等),则如果最新版本也与该范围匹配,您的package.json
将不会更新,只有您的yarn.lock
。
如果您希望更新您的
package.json
:
"x.x.x"
)yarn
更新 yarn.lock
yarn upgrade-interactive
并选择要升级的所有依赖项现在您的
yarn.lock
和 package.json
都将反映准确的最新版本。
您还可以将依赖项复制到打字稿或 JavaScript 游乐场,并使用
Object.entries(obj).reduce((xs, x) =>
${xs} ${x[0] }, "yarn add")
生成包含 package.json
中所有包的命令。
let obj = {
"@types/react": "^16.3.18",
"@types/react-dom": "^16.0.6",
"awesome-typescript-loader": "^5.1.0",
"babel-polyfill": "^6.26.0",
"del": "2.2.2",
"es-cookie": "^1.2.0",
"es6-promise": "4.1.1",
"gulp": "^4.0.2",
"gulp-autoprefixer": "^3.1.1",
"gulp-clean-css": "^3.0.2",
"gulp-concat": "^2.6.1",
"gulp-if": "^2.0.2",
"gulp-jshint": "^2.0.4",
"gulp-merge-media-queries": "0.2.1",
"gulp-rename": "^1.2.2",
"gulp-rev-all": "^0.9.7",
"gulp-sass": "^3.1.0",
"gulp-uglify": "^2.0.1",
"jshint": "^2.9.4",
"node-promise": "^0.5.12",
"react": "^16.4.1",
"react-dom": "^16.4.1",
"require-dir": "^0.3.2",
"run-sequence": "1.2.2",
"source-map-loader": "^0.2.3",
"typescript": "^2.9.2",
"webpack": "^4.12.0",
"webpack-cli": "^3.0.8",
"webpack-log": "^1.2.0"
}
let res = Object.entries(obj).reduce((xs, x) => `${xs} ${x[0] }`, "yarn add")
console.log(res)
输出:
yarn 添加 @types/react @types/react-dom Awesome-typescript-loader babel-polyfill del es-cookie es6-promise gulp gulp-autoprefixer gulp-clean-css gulp-concat gulp-if gulp-jshint gulp-merge-媒体查询 gulp-rename gulp-rev-all gulp-sass gulp-uglify jshint 节点承诺反应 反应-dom 要求-dir 运行序列 源地图加载器 打字稿 webpack webpack-cli webpack-log
我使用这个游乐场来快速生成命令。从 json 对象快速生成代码也很有用。
jq 两线:
cat package.json | jq '.dependencies | keys[]' -r | xargs yarn upgrade
cat package.json | jq '.devDependencies | keys[]' -r | xargs yarn upgrade