# 創建插件
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`?所在目錄的絕對路徑。