本文整理自网络,侵删。
常见问题
如何安装grunt?
对于常规的安装说明,请阅读快速入门指南。如果在阅读完之后你需要更多的详细信息,你可以阅读更详细的的安装 Grunt指南。
什么时候我将可以使用开发中的'某某'特性?
在安装 Grunt指南中介绍了如何安装已发布的和未发布的开发版本的Grunt。
Grunt可以在Windows上工作吗?
Grunt可以很好的在windows上工作,因为Node.js和npm都能够很好的在windows上工作。通常情况下,问题在于Cygwin,因为它捆绑着一个较老版本的Node.js。
避免这个问题最好的办法是使用msysGit installer安装二进制的git
和使用Node.js installer去安装二进制的node
和npm
,然后使用内置的Windows command prompt 或 PowerShell 去替代Cygwin。
为什么我的异步任务不能执行完毕?
这是因为你忘记调用 this.async 方法来告知Grunt你的task是异步执行的。为了简化模型,Grunt采用同步模式的编码风格,你可以通过在任务中调用 this.async()
切换到异步模式。
注意,如果task执行失败,可以传递 false
给 done()
函数告知Grunt。
案例:
grunt.registerTask('asyncme', 'My asynchronous task.', function() {
var done = this.async();
doSomethingAsync(done);
});
如何启用shell中的tab键自动补全功能?
为了给grunt增加tab键自动补功能,可以在你的~/.bashrc
文件中添加下面一行代码:
eval "$(grunt --completion=bash)"
当然,假设你已经使用npm install -g grunt
在全局安装好了Grunt。因为Grunt目前仅仅支持bash命令。
我如让多个任务共享参数?
虽然每个任务可以使用它自己的参数,但是,这里有几个方法允许你在多个task中共享参数。
"动态的" 任务别名
这是多个任务共享参数的首选方法
鉴于任务别名是很简单的,一个普通的task可以使用grunt.task.run让一个函数作为“动态的”任务别名。在下面这个案例中,在命令行中执行grunt build:001
,最终效果是执行foo:001
、bar:001
和 baz:001
这三个task。
grunt.registerTask('build', 'Run all my build tasks.', function(n) {
if (n == null) {
grunt.warn('Build num must be specified, like build:001.');
}
grunt.task.run('foo:' + n, 'bar:' + n, 'baz:' + n);
});
-- 选项
多个任务共享参数的方式是使用grunt.option。在这里有一个例子,在命令行中执行grunt deploy --target=staging
会让grunt.option('target')
返回"staging"
。
grunt.registerTask('upload', 'Upload code to specified target.', function(n) {
var target = grunt.option('target');
// do something useful with target here
});
grunt.registerTask('deploy', ['validate', 'upload']);
注意,布尔类型的参数可以使用一个没有值的键。例如,在命令行中执行grunt deploy --staging
会让grunt.option('staging')
返回true
。
全局和配置
在其他情况下,你可能希望暴露一个设置配置或者全局的值方法。 在这种情况下,可以在注册任务时设置其参数作为一个全局对象的或者项目配置的值。
相关阅读 >>
更多相关阅读请进入《Grunt》频道 >>

Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者