【发布时间】:2014-09-26 08:46:25
【问题描述】:
我对 grunt 比较陌生,对 node 还不是很熟悉。
我有一个样板 Gruntfile 和 package.json 文件,我在所有项目中都使用它们并根据需要对其进行修改。
当我开始每个项目时,我想更新 devDependencies 和 package.json 中的所有 Grunt 插件,但我不知道有一种快速简便的方法来做到这一点。
是否可以使用一个命令更新所有模块,还是必须单独更新?
谢谢。
【问题讨论】:
我对 grunt 比较陌生,对 node 还不是很熟悉。
我有一个样板 Gruntfile 和 package.json 文件,我在所有项目中都使用它们并根据需要对其进行修改。
当我开始每个项目时,我想更新 devDependencies 和 package.json 中的所有 Grunt 插件,但我不知道有一种快速简便的方法来做到这一点。
是否可以使用一个命令更新所有模块,还是必须单独更新?
谢谢。
【问题讨论】:
在您的package.json 中,您可以使用一系列要安装的版本标记每个依赖项,然后键入npm install 以在给定版本中安装所有列出的依赖项:
只安装0.6.0:
{
"devDependencies": {
"grunt-contrib-watch": "0.6.0"
}
}
以~ 为前缀以安装最新的补丁 版本0.6.x:
随着0.6.1、0.6.2、0.6.3 等版本的发布,npm install 将安装这些版本的最新版本。如果0.7.0 已发布,则不会安装该版本(通常是一个好的策略,因为它可能包含重大更改)。
{
"devDependencies": {
"grunt-contrib-watch": "~0.6.0"
}
}
明确设置范围:
您可以使用>、<、<=、>= 来显式设置版本范围。自定义范围的另一个好选择,或者如果您想明确说明您的版本范围。以下将安装大于或等于0.6.0但小于1.0.0的每个版本:
{
"devDependencies": {
"grunt-contrib-watch": ">= 0.6.0 < 1.0.0"
}
}
始终使用 * 安装最新版本
或者,如果您总是想要最新版本,请使用 *:
{
"devDependencies": {
"grunt-contrib-watch": "*"
}
}
在 npm 文档中查看有关版本范围的更多信息:https://www.npmjs.org/doc/misc/semver.html
npm outdated
如果您想查看哪些依赖项已过期,请使用npm outdated:https://www.npmjs.org/doc/cli/npm-outdated.html
npm update
使用npm update 将所有依赖项更新到最新版本。或npm update packagename anotherpackage 将特定软件包更新到最新版本。
【讨论】:
grunt-dev-update 插件——是我的选择。
此答案与 2018 年 2 月相关。将来,此答案中的数据可能会过时。
这个答案的作者在 2018 年 2 月亲自使用了这个插件。
为什么不使用
npm update或npm install?首先 —
npm update不适用于开发依赖项,
第二——npm update留在你的 semver 中,匹配你的package.json,
第三——npm 不像你的繁重任务那样自动化。
official plugin description 中描述了安装、使用说明和选项。
奇怪的选项名称;我一开始不明白,options.semver是什么。
示例配置:
Package name : autoprefixer
Package type : devDependencies
Current version : 6.7.7
Wanted version : 6.7.7
Latest version : 8.0.0
Package name : browser-sync
Package type : devDependencies
Current version : 2.23.5
Wanted version : 2.23.6
Latest version : 2.23.6
你在控制台中运行grunt devUpdate:
如果 semver: true:
autoprefixer 未更新,浏览器同步更新。
elif semver: false:
autoprefixer 和浏览器同步更新两者。
【讨论】: