@elenjs/release
v0.1.2
Published
ElenJS release engine — version bump, release branch, tag, GitHub Release, and Pages sync
Readme
@elenjs/release
ElenJS 发版引擎:版本 bump、release 分支、tag 与 GitHub Release。
本包是库,不含 CLI。命令行入口见 @elenjs/cli(bin: elen)。
安装
npm install @elenjs/release配置
在仓库根目录放置 .elencli.cjs:
module.exports = {
allowBranch: ["master"],
bumpFiles: ["package.json", "package-lock.json"],
tagPrefix: "v",
releasePrefix: "release-v",
changelog: false,
hooks: {
postpublish: "npm publish",
},
};changelog 为 true 或对象时,release 若发现目标文件不存在会先创建骨架,再写入版本节。
Pages 同步
module.exports = {
// ...
pages: {
repo: "elenjs/elenjs.github.io",
branch: "master",
dist: "dist",
siteUrl: "https://elenjs.github.io",
commitMessage: "deploy: site v{{version}}",
},
};import { syncPages } from "@elenjs/release";
syncPages();CLI:elen pages。环境变量可覆盖:PAGES_REPO / PAGES_BRANCH / PAGES_REMOTE / PAGES_DEPLOY_TOKEN / DIST_DIR / DEPLOY_VERSION。
API
import {
release,
publish,
resolveBumpVersion,
getProjectVersionFromCwd,
loadConfig,
} from "@elenjs/release";
const config = loadConfig();
const current = getProjectVersionFromCwd();
const next = resolveBumpVersion(current, "patch");
release({ nextVersion: next });
// 合并到主分支后
publish();流程
release:干净工作区 + 允许分支 → 可选创建 changelog → 切release-v*→ bump → 提交推送- 合并回主分支后,在主分支执行
publish:hooks → push → tag →gh release→ hooks
