Skip to content

Commit

Permalink
build: 修改版本生成方式
Browse files Browse the repository at this point in the history
  • Loading branch information
simply-none committed Apr 30, 2024
1 parent 5aae782 commit 8c13df2
Show file tree
Hide file tree
Showing 6 changed files with 76 additions and 48 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
"cg": "node ./utils/generateChangelog.js",
"c": "conventional-changelog -p angular -i CHANGELOG.md -s",
"commit": "git pull && git add . && git-cz",
"r": "node ./utils/generateVersion.js && npm run cg && node ./utils/gitCommit.js && git push --follow-tags origin master",
"r": "npm run cg && node ./utils/gitCommit.js",
"prepare": "husky install",
"dev": "vitepress dev docs",
"build": "vitepress build docs",
Expand Down
11 changes: 9 additions & 2 deletions utils/generateChangelog.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
const gitlog = require("gitlog").default;
const pkg = require('../package.json')
const fs = require('fs')
const generateVersion = require('./utils').generateVersion

const repo = pkg.repository.url.replace('.git', '')

Expand Down Expand Up @@ -48,13 +49,19 @@ let commitObj = {
for (let i = 0; i < commits.length; i++) {
let commit = commits[i]
firstCommit = commit
if (commit.tag.includes('tag:')) {
if (commit.tag.includes('tag:') || commit.tag.includes('HEAD')) {
start = true
if (!s) {
s = i
}
// 对tag进行分类
let tag = commit.tag.split(',').find(name => name.includes('tag:'))
let tag = commit.tag.split(',').find(name => {
return name.includes('tag:') || name.includes('HEAD')
})
console.log(commit.tag)
if (tag.includes('HEAD')) {
tag = generateVersion(pkg.version)
}
tag = tag.replace('tag:', '').replace('v', '').trim()
let tagSort = tag.split('.').map(t => t.padStart(3, '0')).join('.')
currentTag = tagSort
Expand Down
44 changes: 0 additions & 44 deletions utils/generateVersion.js

This file was deleted.

23 changes: 22 additions & 1 deletion utils/gitCommit.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,33 @@
const shell = require('shelljs')
const pkg = require('../package.json')
const generateVersion = require("./utils").generateVersion
const updatedVersion = require("./updatedVersion").updatedVersion

// 先获取下个 版本号
const nextVersion = generateVersion(pkg.version)

let gitAddMsg = shell.exec('git add .')
if (gitAddMsg.code !== 0) {
console.error(gitAddMsg.stderr)
}

let gitCommitMsg = shell.exec(`git commit -m "chore(release): ${pkg.version}"`)
// 更新项目的版本号
updatedVersion(pkg.version)

// 提交代码
let gitCommitMsg = shell.exec(`git commit -m "chore(release): ${nextVersion}"`)
if (gitCommitMsg.code !== 0) {
console.error(gitCommitMsg.stderr)
}

// 添加git tag
let gitTagMsg = shell.exec(`git tag ${'v' + nextVersion}`)
if (gitTagMsg.code !== 0) {
console.error(gitTagMsg.stderr)
}

// 推送到远程仓库
let gitPushMsg = shell.exec('git push --follow-tags origin master')
if (gitPushMsg.code !== 0) {
console.error(gitPushMsg.stderr)
}
20 changes: 20 additions & 0 deletions utils/updatedVersion.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
const generateVersion = require("./utils").generateVersion
const fs = require("fs");

function updatedVersion(version) {
let newVersion = generateVersion(version);
const packageJson = JSON.parse(fs.readFileSync("package.json", "utf8"));
const packageLockJson = JSON.parse(fs.readFileSync("package-lock.json", "utf8"));

packageJson.version = newVersion;
packageLockJson.version = newVersion;
packageLockJson.packages[""].version = newVersion;

fs.writeFileSync("package.json", JSON.stringify(packageJson, null, 2) + '\n');
fs.writeFileSync("package-lock.json", JSON.stringify(packageLockJson, null, 2) + '\n');

}

module.exports = {
updatedVersion,
};
24 changes: 24 additions & 0 deletions utils/utils.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
const pkg = require("../package.json");

function generateVersion(version = pkg.version) {
let maxTag = 9
let versionA = version.split(".");
let [major, minor, patch] = versionA;
if (Number(patch) !== maxTag) {
patch = parseInt(patch) + 1;
return `${major}.${minor}.${patch}`;
}
if (Number(patch) === maxTag) {
patch = "0";
minor = parseInt(minor) + 1;
}
if ((Number(patch) === 0 && Number(minor) === (maxTag + 1)) || Number(minor) === maxTag) {
minor = "0";
major = parseInt(major) + 1;
}
return `${major}.${minor}.${patch}`;
}

module.exports = {
generateVersion,
};

0 comments on commit 8c13df2

Please sign in to comment.