貢獻前準備

開發環境配置

javascript-state-machine項目基於以下工具構建:

  • Webpack 2:模塊打包工具
  • UglifyJS2:代碼壓縮工具
  • Ava:測試框架

首先克隆項目倉庫:

git clone https://gitcode.com/gh_mirrors/ja/javascript-state-machine
cd javascript-state-machine

安裝依賴:

npm install

項目核心文件結構:

src/                  # 源代碼目錄
test/                 # 測試文件目錄
lib/                  # 打包後的庫文件
docs/                 # 文檔目錄
package.json          # 項目配置文件
webpack.config.js     # Webpack配置文件

開發流程

代碼修改規範

  1. 源代碼採用ES5語法編寫,不使用Babel轉譯
  2. 所有功能變更需先在issues中討論
  3. 遵循項目現有代碼風格

測試編寫

所有代碼變更必須包含對應的測試用例,測試文件放在test/目錄下。項目測試文件組織如下:

  • test/basics.js:基礎功能測試
  • test/transitions.js:狀態轉換測試
  • test/lifecycle.js:生命週期測試
  • test/plugin/:插件功能測試

運行測試命令:

npm test

構建項目

代碼修改完成後,需重新構建發行文件:

npm run build

該命令會執行以下操作:

  1. 運行Webpack打包模塊(配置文件:webpack.config.js)
  2. 壓縮生成的JS文件

PR提交步驟

提交前檢查清單

  •  所有測試通過(npm test
  •  重新構建發行文件(npm run build
  •  添加/更新相關文檔(放在docs/目錄)

PR提交流程

  1. Fork項目倉庫到個人賬號
  2. 創建特性分支:git checkout -b feature/your-feature-name
  3. 提交修改:git commit -m "清晰描述修改內容"
  4. 推送到個人倉庫:git push origin feature/your-feature-name
  5. 在GitCode上創建Pull Request

PR審核標準

  • 代碼質量:遵循項目編碼規範
  • 測試覆蓋:包含完整的測試用例
  • 文檔完善:更新相關文檔説明
  • 兼容性:確保與現有功能兼容

常用開發命令

命令

功能描述

npm test

運行所有測試並生成覆蓋率報告

npm run build

構建發行文件

npm run watch

監聽文件變化並自動運行測試

npm run bundle

僅執行Webpack打包

npm run minify

僅執行代碼壓縮

貢獻者注意事項

  • 貢獻代碼即表示同意將代碼版權轉讓給項目
  • 所有PR將由項目維護者審核
  • 重大功能變更可能需要較長審核時間
  • 請參考docs/contributing.md獲取更多詳細信息

示例:添加新插件的PR流程

  1. 在src/plugin/目錄下創建新插件文件
  2. 在test/plugin/目錄添加測試文件
  3. 更新docs/state-machine-factory.md文檔
  4. 運行npm test確保測試通過
  5. 運行npm run build構建新插件
  6. 提交PR,標題格式:[Plugin] Add xxx plugin