Upgrading from 0.4 to 1.0

旧版本(如 1.5 及更早版本)不再维护。在此处了解更多信息和其他支持选项。

本指南旨在帮助你将项目和插件从 Grunt 0.4.x 升级到 Grunt 1.0。

请注意 Grunt 1.0.0 不再支持 Node.js v0.8。

对于使用 Grunt 的项目

对等依赖

在安装使用 Grunt 1.0 的项目时,你可能会收到 peerDependencies 错误。 我们建议你向你喜欢的插件发送拉取请求,要求他们更新其 package.json 的 peerDependencies 部分。 有关插件更新的详细信息,请参见下文。

对于插件和插件开发者

对等依赖

如果你有一个 Grunt 插件,其 package.json 的 peerDependencies 部分包含 grunt, 我们建议使用 "grunt": ">=0.4.0" 进行标记。否则,当 grunt@1.0.0 发布时,npm@2 用户将 在尝试安装你的插件时收到硬错误,而 npm@3 用户将收到警告。

请注意,从 npm@3 开始,对等依赖不再为用户自动安装。 Grunt 插件的用户需要在安装任何 Grunt 插件的同时,使用 npm install grunt --save-dev

我们要求你使用 "grunt": ">=0.4.0" 更新你的插件,并在 npm 上发布。

1.0.0 中的变更

  • 防止异步回调被多次调用。Pull #1464。
  • 将版权更新为 jQuery Foundation 并删除冗余标头。修复 #1478。
  • 将 glob 更新到 7.0.x。修复 #1467。
  • 删除重复的 BOM 剥离代码。Pull #1482。
  • 更新到最新的 cli ~1.2.0
  • 确保在安装时创建 grunt 可执行文件。

Grunt 1.0 RC1 中的变更:

请注意,一些 API 已发生变化,需要进行主要版本更新:

  • coffee-script 升级到 ~1.10.0,在使用语言与插件和 Gruntfile 时可能会导致破坏性变更。
  • nopt 升级到 ~3.0.6,修复了许多问题,包括传递多个参数和处理数字作为选项。请注意,以前 --foo bar 会将值 'bar' 传递给选项 foo。现在它将选项 foo 设置为 true,并运行任务 bar
  • glob 升级到 ~6.0.4minimatch 升级到 ~3.0.0。使用 grunt.file.expandMapping() 时,结果现在默认排序。 如果不希望结果排序,请传递 nosort: true 选项。
  • lodash 升级到 ~4.3.0。发生了许多变更。直接影响 Grunt 的一些变更包括 grunt.util._.template() 返回一个编译函数, grunt.util._.flatten 不再深度展平。grunt.util._ 已弃用,我们强烈建议你 npm install lodashvar _ = require('lodash') 来使用 lodash。 请查看 lodash 更新日志以获取完整的变更列表:https://github.com/lodash/lodash/wiki/Changelog
  • iconv-lite 升级到 ~0.4.13,默认情况下会剥离 BOM。
  • js-yaml 升级到 ~3.5.2,可能会影响 grunt.file.readYAML。 我们建议你直接 npm install js-yaml 并使用 var YAML = require('js-yaml') 以防将来弃用。
  • 可以将文件 mode 选项传递给 grunt.file.write()
  • Done, without errors. 更改为 Done.,以避免因为单词 errors 而意外失败。