简介
grunt-auto-release
是一个基于 Grunt
的自动化发布工具,它可以自动完成打包、生成 changelog、提交代码、发布到 npm 等流程,大大提高了开发者的工作效率。本文将详细介绍如何使用 grunt-auto-release
。
安装
全局安装 Grunt CLI
在开始安装 grunt-auto-release
前,需要先全局安装 Grunt CLI
。
npm install -g grunt-cli
安装 grunt-auto-release
接着,在项目根目录中运行以下命令安装 grunt-auto-release
。
npm install --save-dev grunt-auto-release
配置
添加任务配置
在 Gruntfile.js
中添加 grunt-auto-release
的任务配置。
-- -------------------- ---- ------- ------------------ --------------- - -------- - -------------- ----- -------------- ---------------- ---- ------- ---- -------- ----- ------- ---- -------------- -------- --- ------- ---- ------- - ----- ----------------- --------------- --------------------- -- ---- - -------- ---- - - - ---
其中,options
中的字段含义如下:
checkTravisCi
:是否检查 Travis CI 构建状态,默认为true
。commitMessage
:提交信息模板,<%= version %>
会被替换为版本号。tagName
:标签名称模板,<%= version %>
会被替换为版本号。tagAnnotation
:标签注释模板,<%= version %>
会被替换为版本号。github.repo
:GitHub 仓库地址,<owner>
和<repo>
分别是仓库的拥有者和名称。github.accessTokenVar
:GitHub 访问令牌变量名。npm.publish
:是否发布到 npm,默认为true
。
添加环境变量
在 Travis CI 中使用 grunt-auto-release
需要添加以下四个环境变量:
GITHUB_ACCESS_TOKEN
:GitHub 访问令牌。NPM_AUTH_TOKEN
:npm 认证令牌。TRAVIS_BRANCH
:当前分支名称。TRAVIS_PULL_REQUEST
:Pull Request 编号(如果不是 Pull Request,则为false
)。
可以通过以下命令在 Travis CI 中添加环境变量:
travis encrypt GITHUB_ACCESS_TOKEN=<token> --add travis encrypt NPM_AUTH_TOKEN=<token> --add
使用
发布新版本
运行以下命令发布新版本:
grunt auto-release
在发布前,grunt-auto-release
会自动完成以下操作:
- 检查当前分支是否为主分支(即
master
分支)。 - 检查是否存在未提交的更改,并提示用户将更改提交至 Git。
- 更新
package.json
中的版本号,并生成 changelog。 - 提交代码至 Git,标记为待发布状态。
- 新建一个 Git 标签,并将其推送到远程仓库。
- 发布到 npm。
如果没有出现错误,grunt-auto-release
将会自动完成所有操作,并发布新版本。
发布补丁版
运行以下命令发布补丁版:
grunt auto-release:patch
与发布新版本相比,发布补丁版只会更新 package.json
的 patch
版本,并生成 changelog。其他操作与发布新版本相同。
示例
以下是 Gruntfile.js
的示例代码,用于演示如何使用 grunt-auto-release
。
-- -------------------- ---- ------- -------------- - --------------- - ----------------------------------------- ------------------ --------------- - -------- - -------------- ----- -------------- ------ - ----------------------------------------------------------- -------- ----------------------------------------------------------------------------------