我如何才能对所有依赖项进行版本调整?
How can I version bump all my dependencies?
yarn outdated
提供了很多信息,但我想避免 运行 一个接一个地做 yarn upgrade
。
根据 yarn 的文档,据说 yarn upgrade
不带参数可以升级所有依赖项,但我项目的 package.json
和 yarn outdated
显示的包版本与以前相同。
是否有一些命令或参数会影响我的所有依赖项?
如果不是,是否在某种程度上不鼓励这种做法?
您可以使用 yarn upgrade
不带任何参数将您的软件包更新到 package.json 中指定的最新版本。
这取自 docs:
yarn upgrade
This command updates all dependencies to their latest version based on
the version range specified in the package.json file. The yarn.lock
file will be recreated as well.
这只会更新允许在 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
如果您的依赖项使用范围版本("^x.x.x"
、"~x.x.x"
等),如果最新版本也匹配该范围,您的 package.json
将不会更新,仅你的 yarn.lock
.
如果您希望更新您的 package.json
:
- 将所有依赖项更改为固定版本 (
"x.x.x"
)
- 运行
yarn
更新 yarn.lock
- 运行
yarn upgrade-interactive
和 select 您要升级的所有依赖项
现在您的 yarn.lock
和 package.json
都将准确反映最新版本。
只需 运行 yarn upgrade-interactive --latest
和 select 个您要使用 space 按钮更新的软件包,然后按回车键进行更新。
将所有软件包升级到最新版本
yarn upgrade --latest
Yarn v2 及更高版本用户的答案。
导入 interactive-tools
插件:
$ yarn plugin import interactive-tools
而运行是这样的:
$ yarn upgrade-interactive
请注意,这也会修改您 package.json
中的语义版本。
我总是遵循它的官方文档:)
yarn add --dev yarn-upgrade-all
您还可以将依赖项复制到打字稿或 javascript playground 并使用 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 add @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-media-queries gulp-rename gulp-rev-all gulp-sass gulp-uglify jshint node-promise react react-dom require-dir run-sequence source-map-loader typescript webpack webpack-cli webpack-log
我使用这个 playground 来快速生成命令。从 json 个对象快速生成代码也很有用。
yarn outdated
提供了很多信息,但我想避免 运行 一个接一个地做 yarn upgrade
。
根据 yarn 的文档,据说 yarn upgrade
不带参数可以升级所有依赖项,但我项目的 package.json
和 yarn outdated
显示的包版本与以前相同。
是否有一些命令或参数会影响我的所有依赖项?
如果不是,是否在某种程度上不鼓励这种做法?
您可以使用 yarn upgrade
不带任何参数将您的软件包更新到 package.json 中指定的最新版本。
这取自 docs:
yarn upgrade
This command updates all dependencies to their latest version based on the version range specified in the package.json file. The yarn.lock file will be recreated as well.
这只会更新允许在 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
如果您的依赖项使用范围版本("^x.x.x"
、"~x.x.x"
等),如果最新版本也匹配该范围,您的 package.json
将不会更新,仅你的 yarn.lock
.
如果您希望更新您的 package.json
:
- 将所有依赖项更改为固定版本 (
"x.x.x"
) - 运行
yarn
更新yarn.lock
- 运行
yarn upgrade-interactive
和 select 您要升级的所有依赖项
现在您的 yarn.lock
和 package.json
都将准确反映最新版本。
只需 运行 yarn upgrade-interactive --latest
和 select 个您要使用 space 按钮更新的软件包,然后按回车键进行更新。
将所有软件包升级到最新版本
yarn upgrade --latest
Yarn v2 及更高版本用户的答案。
导入 interactive-tools
插件:
$ yarn plugin import interactive-tools
而运行是这样的:
$ yarn upgrade-interactive
请注意,这也会修改您 package.json
中的语义版本。
我总是遵循它的官方文档:)
yarn add --dev yarn-upgrade-all
您还可以将依赖项复制到打字稿或 javascript playground 并使用 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 add @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-media-queries gulp-rename gulp-rev-all gulp-sass gulp-uglify jshint node-promise react react-dom require-dir run-sequence source-map-loader typescript webpack webpack-cli webpack-log
我使用这个 playground 来快速生成命令。从 json 个对象快速生成代码也很有用。