为解决这些问题,semantic-release应运而生。 CI工具中可以集成commitlint来检查PR(pull request)中的commit message. semantic-release semantic-release 是基于提交信息实现全自动化版本管理和软件发布的工具 生态插件(如@semantic-release/gitlab)结合时,可无缝融入DevOps流程。 /commit-analyzer", "@semantic-release/release-notes-generator", ". /ci-plugin.cjs", "@semantic-release/gitlab", "@semantic-release/git" ] } .
和它的插件: semantic-release:语义发版核心库 @semantic-release/changelog:用于自动生成 changelog.md @semantic-release/git :用于将发布时产生的更改提交回远程仓库 npm i semantic-release @semantic-release/changelog @semantic-release/git -D 在项目根目录新建配置文件 .releaserc并写入: { "branches": ["master"], "plugins": [ "@semantic-release/commit-analyzer", "@semantic-release/release-notes-generator", "@semantic-release/changelog", "@semantic-release /github", "@semantic-release/npm", "@semantic-release/git" ] } 这里同样,如果你的主分支名称是“main”,上面的branches
这就是我们接下来要讲的利用Semantic-release自动发布。 4. semantic-release相关操作 ❝semantic-release:帮助我们根据Git提交来管理何时发布新版本,并且还支持语义化版本。 ❞ 安装相关依赖 npm install semantic-release @semantic-release/git @semantic-release/gitlab @semantic-release /npm --save-dev 配置semantic-release 我们通过.releaserc.json来配置semantic-release的动作。 "semantic-release": "semantic-release" //... } } 新增publishConfig 这里的操作和之前的手动发布的情况是一样的,就是设置一套发布规则
/coverage/lcov.info | coveralls", "commit": "git-cz", "semantic-release": "semantic-release", ^3.4.0", "rollup-plugin-sourcemaps": "^0.4.2", "rollup-plugin-typescript2": "^0.18.0", "semantic-release
Conventional Commits 生成 changelog 的底层 API —— conventional-changelog[6],以及一些上层工具 standard-version[7], semantic-release semantic-release 除了上述能力,还会执行 git push,npm publish 等操作。 package/conventional-changelog [7] standard-version: https://www.npmjs.com/package/standard-version [8] semantic-release : https://github.com/semantic-release/semantic-release [9] commitizen: https://github.com/commitizen/
从技术层面来说可以收敛发包权限,结合 semantic-release[10] 在 CI/CD 中实现自动发包,杜绝研发过程中在非 master 分支上随意发包的危险操作。 postcss-bidirection [9] switching-to-preact: https://preactjs.com/guide/v10/switching-to-preact#portals [10] semantic-release : https://github.com/semantic-release/semantic-release
跟semantic-release等工具配合使用会更好。 2.核心原理: monorepo 和 multrepo 区别: monorepo: 是将所有的模块统一的放在一个主干分支之中管理。
引言自动生成 changelog 的做法并不新鲜,比如 conventional-changelog 和 semantic-release 已经广泛应用在一些社区项目中。
`echo installing semantic-release && npx -p semantic-release@15 -c 'echo running semantic-release && 如果需要,分别使用 semantic-release 和 codecov 进行相关操作。
运行:npm i -D semantic-release npx semantic-release-cli setup 按照终端的提示,提供所需的令牌 需要一个来自 GitHub 的个人访问令牌。 "publishConfig": { "access": "public" } 通过使用semantic-release npm脚本进行模拟运行来测试一切。 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} run: npx semantic-release
, "git add"] } } 添加预提交钩子: echo 'npx lint-staged' > .husky/pre-commit 自动发布(可选):语义化版本与 changelog 可用 semantic-release
Changesets 或 semantic-release 可自动生成版本与变更日志。 性能优化与门禁 { "lint-staged": { "src/**/*.
先看看你项目有没有 commitlint 或发版校验 如果你的项目接了: • commitlint • semantic-release • CI 中的 Conventional Commits 校验
幸运的是,你可以使用semantic-release这个模块自动化你的JavaScript的模块发布。
其实有semantic-release和python-semantic-release这种工具能按照所谓的《语义化版本控制规范》来自动更新,但其本质是依赖 git 的 commit message,需要按照规范编写
这确保提交信息与工具如semantic-release兼容,便于生成变更日志。 3.
一些例子i: semantic-release 自动化版本发布 mention-bot @可能的贡献者来帮你复查代码 Danger 帮你自动复查代码 对于bug报告和其他常见形式的贡献,Github有Issue
将这种模式与semantic-release[12]之类的东西结合起来会减少痛苦。(在atlassian/lerna-semantic-release[13]已经有这方面的工作)。