黑人的命也是命

Grunt 博客

Grunt 1.4.0 发布

Grunt 团队很高兴地宣布 Grunt 1.4.0 版本发布。

此版本由 @vladikoff 和贡献者们共同完成

等等!


以下是更新内容

您可以在 npmGitHub 上找到 Grunt。

Grunt 1.2.0 发布

Grunt 团队很高兴地宣布 Grunt 1.2.0 版本发布。

此版本由 @vladikoff 和贡献者们共同完成

等等!


以下是更新内容

  • 允许使用位于 Node.js 和 NPM 可见路径下的 grunt 插件,而不仅限于对这些插件具有开发依赖项的包内的 node_modules 目录。(PR:https://github.com/gruntjs/grunt/pull/1677
  • 从依赖项中移除了 CoffeeScript。为了简化过渡,如果 CoffeeScript 仍然存在,Grunt 将尝试加载它。如果不存在,并且用户加载了 CoffeeScript 文件,Grunt 将会打印一条有用的错误信息,指示用户应该将 CoffeeScript 包作为开发依赖项安装。这比完全删除 require 要友好得多,但使用最新的 grunt-cli 可以轻松实现,因为用户可以使用 grunt --require coffeescript/register。(PR:https://github.com/gruntjs/grunt/pull/1675
  • 公开了 Grunt 选项键以方便使用。(PR:https://github.com/gruntjs/grunt/pull/1570
  • 避免了在命令名称过长时出现无限循环。(PR:https://github.com/gruntjs/grunt/pull/1697
  • 还包括依赖项更新。

您可以在 npmGitHub 上找到 Grunt。

Grunt 1.1.0 发布

Grunt 团队很高兴地宣布 Grunt 1.1.0 版本发布。

此版本由 @vladikoff@shama 共同完成。


以下是更新内容

  • 将 mkdirp 更新至 ~1.0.3 版本
  • 仅支持 Node >= 8 的版本

您可以在 npmGitHub 上找到 Grunt。

Grunt CLI 1.3.0 发布

Grunt 团队很高兴地宣布 Grunt CLI 1.3.0 版本发布。

npm install grunt-cli -g

此版本由 @shama@vladikoff@Arkni@phated 以及所有 Liftoff 贡献者 共同完成。


此版本意义重大,因为它允许您使用自己喜欢的语言编写 Gruntfile。以前,默认情况下,Gruntfile 只能使用 JavaScript 或 CoffeeScript 编写。

>= 1.3.0 版本中,如果您想使用 TypeScript 编写 Gruntfile,请将 Gruntfile 重命名为以相应扩展名结尾:Gruntfile.ts,并安装相应的解释器 npm install typescript

现在,运行命令 grunt 将会相应地解释 Gruntfile。

另一个例子,如果您想使用 Babel 编写 Gruntfile,请将 Gruntfile 重命名为 Gruntfile.babel.js,并运行 npm install babel

默认情况下,由于使用了 interpret,Grunt CLI 可以解释许多流行的文件扩展名,包括

  • Gruntfile.babel.js -> npm install babel
  • Gruntfile.buble.js -> npm install buble
  • Gruntfile.coffee -> npm install coffeescript
  • Gruntfile.coffee.md -> npm install coffeescript
  • Gruntfile.csv -> npm install require-csv
  • Gruntfile.ini -> npm install require-ini
  • Gruntfile.json
  • Gruntfile.ls -> npm install livescript
  • Gruntfile.ts -> npm install typescript
  • Gruntfile.yaml -> npm install require-yaml

如果 Grunt CLI 不支持您喜欢的语言,您可以使用 --require 选项添加支持

grunt --require myscript/register

然后 Grunt 将会 require 您的自定义模块来解释 Gruntfile。

这一切都要归功于 Grunt CLI 现在使用 Liftoff 运行。

CoffeeScript

以前,默认情况下可以使用 CoffeeScript 编写 Gruntfile。该版本的 CoffeeScript 已被锁定,并且将继续锁定在 ~1.10.0 版本。

依赖于自动解释 Gruntfile.coffee 文件的功能现已弃用。

如果您的 Gruntfile 是用 CoffeeScript 编写的,请另外运行 npm install coffeescript --save-dev。这将允许您使用您喜欢的 CoffeeScript 版本,而不会被锁定在 Grunt 安装的版本上。在 Grunt 的下一个主要版本中,CoffeeScript 依赖项将被移除,您需要另外运行 npm install coffeescript 才能使用 CoffeeScript 编写 Gruntfile。

Grunt 1.0.0 发布

Grunt 团队很高兴地宣布 Grunt 1.0.0 版本发布。

此版本由 @shama@vladikoff@jkaussieskater@dmethvin 共同完成。

同时感谢 @XhmikosR@AurelioDeRosa@Arkni@arithmetric@ascripcaru 的贡献。

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

我们恳请您测试此版本并 报告您遇到的任何问题

使用以下命令立即更新至 Grunt 1.0.0

npm install [email protected] --save-dev

请阅读 RC1 博客文章,了解更多关于 Grunt 1.0 版本更新内容的详细信息。

对等依赖

如果您的 Grunt 插件在 package.json 文件的 peerDependencies 部分中包含 grunt,我们建议您将其标记为 "grunt": ">=0.4.0"。否则,对于 npm@2 用户,在尝试安装您的插件时,[email protected] 将会收到一个严重错误,而 npm@3 用户将会收到一个警告。我们已经向现有的插件发送了超过 2000 个拉取请求来进行此更改。

我们恳请您向您喜欢的插件发送拉取请求,并要求他们更新 package.json 文件中的 peerDependencies 部分。

1.0.0 版本的更新内容

  • 防止异步回调函数被多次调用。拉取请求 #1464。
  • 将版权更新为 jQuery Foundation,并删除冗余的标头。修复 #1478。
  • 将 glob 更新至 7.0.x 版本。修复 #1467。
  • 删除重复的 BOM 字符串代码。拉取请求 #1482。
  • 更新至最新的 cli ~1.2.0 版本
  • 确保在安装时创建 grunt bin 文件。

RC1 版本的更新内容

  • coffee-script 已升级至 ~1.10.0 版本,这可能会在插件和 Gruntfile 中使用该语言时导致重大更改。
  • nopt 已升级至 ~3.0.6 版本,该版本修复了许多问题,包括传递多个参数以及将数字作为选项处理。请注意,以前 --foo bar 用于将值 'bar' 传递给选项 foo。现在,它会将选项 foo 设置为 true,并运行任务 bar
  • glob 已升级至 ~6.0.4 版本,minimatch 已升级至 ~3.0.0 版本。现在,默认情况下,grunt.file.expandMapping() 的结果将进行排序。如果您不希望对结果进行排序,请传递 nosort: true 选项。
  • lodash 已升级至 ~4.3.0 版本。发生了许多变化。其中一些直接影响 Grunt 的变化是:grunt.util._.template() 返回一个编译函数,grunt.util._.flatten 不再进行深度扁平化。grunt.util._ 已弃用,我们强烈建议您运行 npm install lodash 并使用 var _ = 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 一词识别为错误。

正如我们之前提到的,我们也在为所有 Grunt 仓库 寻找贡献者,并且愿意指导您获得更多开源经验。

Grunt 1.0.0 rc1 发布

Grunt 团队很高兴地宣布 1.0.0 版本的第一个候选版本发布。

此版本由 @shama@vladikoff@jkaussieskater 共同完成。并得到了 jQuery 基金会的支持,特别是 @dmethvin@aulvi 的支持。

同时感谢 @XhmikosR@paladox@FredyC@sindresorhus@mrjoelkemp 等人的贡献。

此版本专注于修复关键问题,并改进了对 Windows、OSX 和 Linux 上的 Node.js v0.10、v0.12、v4.0、v5.0 和 io.js 的支持。我们恳请您测试 rc1 版本并 报告您遇到的任何问题

npm install [email protected] --save-dev

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

对等依赖

如果您的 Grunt 插件在 package.json 文件的 peerDependencies 部分中包含 grunt,我们建议您将其标记为 "grunt": ">=0.4.0"。否则,当 [email protected] 版本发布时,npm@2 用户在尝试安装您的插件时将会收到一个严重错误,而 npm@3 用户将会收到一个警告。

请注意,从 npm@3 开始,将不再为用户安装对等依赖项。Grunt 插件的用户应该在安装任何 Grunt 插件的同时运行 npm install grunt --save-dev

我们恳请您向您喜欢的插件发送拉取请求,并要求他们更新 package.json 文件中的 peerDependencies 部分。

征求意见

我们创建了一个 新的仓库,以鼓励社区成员提交 RFC,共同 shaping Grunt 的未来。

提交 RFC 将允许您正式提出对 Grunt 的重大更改,并征求核心团队和社区的反馈。

积极的提案将有助于描绘 Grunt 未来路线图,并希望加快社区对未来 Grunt 版本的贡献。

npm 脚本

我们现在将 grunt-cli 作为 grunt 的一部分安装。许多用户不希望执行 npm install grunt-cli -g 这一额外的步骤。为了更好地符合 Node.js 的习惯用法,您现在可以运行 npm install grunt --save-dev,然后在您的 npm 脚本中包含 Grunt

{
  "scripts": {
    "grunt": "grunt"
  }
}

您的用户现在只需运行 npm installnpm run grunt 即可运行您的 Gruntfile.js 文件。

npm >= 2.0.0 的用户还可以使用以下命令传递任务和选项:npm run grunt -- task --option=foo,这等效于 grunt task --option=foo

如果您希望在您的计算机上使用 grunt 命令,请继续运行 npm install grunt-cli -g 并像以前一样使用。

API 更改

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

  • coffee-script 已升级至 ~1.10.0 版本,这可能会在插件和 Gruntfile 中使用该语言时导致重大更改。
  • nopt 已升级至 ~3.0.6 版本,该版本修复了许多问题,包括传递多个参数以及将数字作为选项处理。请注意,以前 --foo bar 用于将值 'bar' 传递给选项 foo。现在,它会将选项 foo 设置为 true,并运行任务 bar
  • glob 已升级至 ~6.0.4 版本,minimatch 已升级至 ~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 一词识别为错误。

我们鼓励您试用此版本。

我们也正在为所有 Grunt 存储库 寻找贡献者,并且愿意指导您获得更多开源经验。

Grunt 0.4.5 发布

Grunt 0.4.5 现在可以在 npm 上获取。

感谢 Gary BurgessJames SmithCarlos Mantilla 的补丁。同时,感谢 Vlad Filippov 帮助分类问题、解决 Windows CI 测试问题以及整理更新日志。

在此版本中,我们解决了大约 12 个问题,添加了期待已久的 grunt.task.existsgrunt.config.merge 方法,并通过 AppVeyor 设置了 Windows CI 测试。此外,日志记录 API 已被分离到一个单独的模块 grunt-legacy-log 中,以便于维护。

有关更改的完整列表,请参阅 0.4.5 更新日志

此外,我们还接受了许多针对 Grunt contrib 插件 的补丁,并感谢 Kevin MårtenssonAlexander FutekovShinnosuke WatanabeShane DanielArtem SapeginChristoph PojerZhang YichaoJevon WrightJacob LauritzenXhmikosREdan Schwartz 的贡献。

祝您 Grunt 愉快!

Grunt 0.4.4 发布

Grunt 0.4.4 现在可以在 npm 上获取。

此版本修复了 0.4.3 版本中引入的 回归

请参阅 此处 的更新日志。

Grunt 0.4.3 发布

Grunt 0.4.3 现在可以在 npm 上获取。

这主要是一个错误修复版本。感谢 Jonathan KrausePatrickJSJason CustFabio CrisciJames M. GreeneMike Pennisi 的拉取请求。

除了关闭 30 多个问题之外,我们还将 grunt.util 提取到 其自己的模块 中。如 0.4.2 版本中所述,我们正在弃用 grunt.util.* API。使用这些 API 的任务开发者应更新其插件以使用 grunt-legacy-util README 中推荐的库。您可以直接使用 grunt-legacy-util 作为权宜之计,但我们将不再支持它。

有关更改的完整列表,请参阅 此处 的 0.4.3 更新日志。

祝您 Grunt 愉快!

Grunt 0.4.2 发布

Grunt 0.4.2 现在可以在 npm 上获取。

此版本应该可以解决 Windows 开发人员遇到的许多问题,例如管道重定向、控制台输出和 BOM 保留。

除了许多错误修复之外,我们还针对 Grunt 中的外部依赖关系做出了一些决定。**这些外部库已弃用,现在应该作为 npm 模块引入:**

  • 使用 glob 代替 grunt.file.glob
  • 使用 minimatch 代替 grunt.file.minimatch
  • 使用 findup 代替 grunt.file.findup
  • 使用 lodash 代替 grunt.util._
  • 使用 underscore.string 代替 grunt.util._.str
  • 使用 hooker 代替 grunt.util.hooker
  • 使用 async 代替 grunt.util.async
  • 使用 getobject 代替 grunt.util.namespace

如果要在任务中使用这些外部库,请像安装 Grunt 或任何 Grunt 插件 一样使用 npm install <module> --save-dev 安装它们。例如,如果您之前使用过 grunt.util._,现在您需要使用 npm install lodash --save-dev 来引入 Lo-Dash

// Then change this code:
var newArr = grunt.util._.map(arr, fn);

// To this:
var _ = require('lodash');
var newArr = _.map(arr, fn);

该团队也在寻求有关 Grunt 未来发展的反馈,因此如果您有时间,请加入 0.5.0 里程碑 讨论

请参阅 此处 的 0.4.2 更新日志。

祝您 Grunt 愉快!

Grunt 0.4.1 发布

Grunt 0.4.1 现在可以从 npm 获取。

此修补程序版本修复了最近发布的 Node.js v0.10.0 中出现的一些小问题,主要是由于 path API 的更改。如果您想在项目中使用最新版本的 Node.js,则可能应该在这些项目的 package.json 文件中将 Grunt 更新为 ~0.4.1

无论哪种方式,Grunt 仍然可以与 Node.js v0.8.x 一起使用,因此如果您尚未升级到 Node.js v0.10.0,则不需要更新。

除了 Node.js v0.10.0 的更改之外,我们还利用这次机会修复了一些其他小问题,例如在生成子进程时正确处理多字节 I/O,以及确保 Gruntfile 名称不区分大小写。有关更改的完整列表,请参阅 v0.4.0 - v0.4.1 更新日志

Grunt 0.4.0 发布

截至今天上午,Grunt v0.4 最终版已在 npm 上发布!有关该版本的详细说明,请参阅 @tkellenBocoup 博客 上的文章。

最重要的内容

  1. Grunt 不再附带内置任务。它们已被提取到 grunt-contrib 命名空间下官方维护的独立插件中。有关更多详细信息,请参阅我们网站上的 插件列表
  2. Grunt 不再附带二进制文件。要获取 grunt 命令,请使用 npm install -g grunt-cli 全局安装 grunt-cli。该软件包将在本地安装到您的项目后运行任何版本的 Grunt(包括 0.3x)。

未来

Grunt v0.5 将支持一种名为 node-task 的新插件格式。它定义了一个与 Grunt 无关的无状态、基于承诺、事件发射的 API。它有一个真实的规范,Grunt 团队正在与前端开发者社区合作,希望兼容的模块能够与所有任务运行器兼容。

继续使用 Grunt

如果您想了解更多关于 Grunt 的信息,请阅读我们的 入门指南,并查看 配置任务 的所有方法。

将插件更新到 Grunt 0.4

如果您的插件尚不兼容 Grunt 0.4,请考虑更新它?有关更改的概述,请参阅我们的 迁移指南

如果您想在周一之前针对 Grunt 的最终版本进行开发,请在您的项目中指定 "grunt": "0.4.0rc8" 作为 devDependency。在周一发布之后,您将能够使用 "grunt": "~0.4.0" 来实际发布您的插件。如果您依赖于 grunt-contrib 系列中的任何插件,请参阅我们的 候选发布版本列表 以获取兼容版本。所有这些都将在 Grunt 0.4 发布时更新为最终状态。

此外,为了减少开发者社区中的重复工作和碎片化,您可以查看 grunt-contrib 系列插件,看看您的任何功能是否与它们有很大的重叠?Grunt-contrib 由 40 多名贡献者共同维护 - 我们很乐意讨论您想做的任何补充。

最后,我们正在开发一种不依赖于 Grunt 的新任务格式:它被称为 node-task。一旦完成,将会有另一次转换,然后我们将永远不会再要求您升级插件以支持我们的更改。在此之前,感谢您的耐心等待!

如果您对如何进行有任何疑问,请在此处回复,或加入我们在 #grunt on irc.freenode.net 的讨论。

谢谢,我们非常感谢您的工作!