# 创建插件 1. 通过 `npm install -g grunt-init` 命令安装 [grunt-init](https://github.com/gruntjs/grunt-init) 。 2. 通过  ~~~ git clone git://github.com/gruntjs/grunt-init-gruntplugin.git ~/.grunt-init/gruntplugin ~~~ 命令安装grunt插件模版。 3. 在一个空的目录中执行 `grunt-init gruntplugin` 。 4. 执行 `npm install` 命令以准备开发环境。 5. 为你的插件书写代码。 6. 执行 `npm publish` 命令将你创建的 Grunt 插件提发布npm! ## 注意 ### 命名你的task "grunt-contrib" 命名空间保留给 Grunt 团队维护的task使用,请给你自己的task起一个合适名字,并且避免使用被保留的命名空间。 ### 调试 Grunt默认隐藏了error stack traces,但是可以通过 `--stack` 参数启用,方便你调试自己的task。如果你希望 Grunt 在出现错误时总是能记录下stack trace,可以在你的shell中创建一个命令别名(alias)。例如,在bash中,可以通过 `alias grunt='grunt --stack'` 命令创建一个别名。 ### 存储任务文件 只在项目根目录中的 .grunt/[npm-module-name] 目录中存储数据文件,并在适当的时候将其清除。对于临时文件这并不是一个好的解决方案, 建议使用后面列出的几个常用npm模块(例如 [temporary](https://npmjs.org/package/temporary)、[tmp](https://npmjs.org/package/tmp))来调用操作系统级别的临时目录功能。 ### 避免改变当前工作目录:`process.cwd()` 默认情况下,包含gruntfile文件的目录被设置为当前工作目录。用户可以在自己的gruntfile中通过执行`grunt.file.setBase()` 改变改变当前工作目录,但是插件不应该改变它。 `path.resolve('foo')` 可以被用来获取'foo' 相对于 `Gruntfile` 所在目录的绝对路径。