感觉现在的 Github 上的教程越发的难懂了, 看了也不知道怎么写
https://github.com/gruntjs/grunt/wiki/Creating-plugins
我现在的大概能理解的是在 tasks/
目录下写一个脚本来跑应用
大概也是 registerTask
大概的原理, 但我不知道 Grunt 是怎样加载进来那个脚本的
而且, 官方给了一个基本的测试, 但是… 看不懂,
请问有没有指导一下
是不是可以参考别人现成的例子? 比如 grunt-contrib-coffee https://npmjs.org/package/grunt-contrib-coffee https://github.com/gruntjs/grunt-contrib-coffee
不过,我觉得这个插件就是让你本来的task和配置文件变成自动的,省的你自己配置了吧?
Many commonly used tasks like concatenation, minification and linting are available as grunt plugins. As long as a plugin is specified in package.json as a dependency, and has been installed via npm install, it may be enabled inside your Gruntfile with a simple command: grunt.loadNpmTasks(‘grunt-contrib-coffee’);
http://gruntjs.com/getting-started#loading-grunt-plugins-and-tasks
那么既然如此,写这个plugin就应该和写一个npm模块差不多的写法,遵照http://gruntjs.com/creating-plugins 这里的写法,最后npm publish就可以了。
不过,我自己没玩这个grunt。 没有亲自动手,不知道里面的难点。 只能提出自己的一点拙见。
附带seajs里面的文章 SeaJS 打包的 grunt 任务 https://groups.google.com/d/topic/seajs/UTeDYW_572U/discussion
为什么我的异步任务没有完成? 可能由于你忘记调用this.async方法来告诉Grunt你的任务是异步的,那么就可能会发生这种情况(异步任务失败)。为了简单起见,Grunt使用同步的编码风格,可以在任务体中通过调用this.async将该任务(调用这个方法的任务)转换为异步的。
注意传递false给done函数就会告诉Grunt任务已经失败。
例如:
grunt.registerTask(‘asyncme’, ‘My asynchronous task.’, function(){ var done = this.async(); doSomethingAsync(done); });