chore: get release version from git branch name (support beta identifier)

This commit is contained in:
LeoYuan 袁力皓 2022-05-05 17:20:15 +08:00 committed by 絮黎
parent 176583f48a
commit 80fbe6de2c

View File

@ -1,18 +1,26 @@
const { execSync } = require('child_process'); const { execSync } = require('child_process');
const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin'); const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
const fse = require('fs-extra');
function getReleaseVersion() { // get version from git branch name,
// e.g. release/1.0.7 => 1.0.7
// release/1.0.7-beta => 1.0.7 (beta)
function getVersion() {
const gitBranchName = execSync('git rev-parse --abbrev-ref HEAD', { encoding: 'utf-8' }); const gitBranchName = execSync('git rev-parse --abbrev-ref HEAD', { encoding: 'utf-8' });
const reBranchVersion = /^(?:[\w-]+\/)(\d+\.\d+\.\d+)$/im; const reBranchVersion = /^(?:[\w-]+\/)(\d+\.\d+\.\d+)(-?beta)?$/im;
const match = reBranchVersion.exec(gitBranchName); const match = reBranchVersion.exec(gitBranchName);
if (!match) { if (!match) {
throw new Error(`[engine] gitBranchName: ${gitBranchName} is not valid`); console.warn(`[engine] gitBranchName: ${gitBranchName}`);
return 'N/A';
} }
return match[1]; const [_, version, beta] = match;
return beta && beta.endsWith('beta') ? `${version}(beta)` : version;
} }
const version = getReleaseVersion(); const releaseVersion = getVersion();
module.exports = ({ context, onGetWebpackConfig }) => { module.exports = ({ context, onGetWebpackConfig }) => {
onGetWebpackConfig((config) => { onGetWebpackConfig((config) => {
@ -24,7 +32,7 @@ module.exports = ({ context, onGetWebpackConfig }) => {
config config
.plugin('define') .plugin('define')
.use(context.webpack.DefinePlugin, [{ .use(context.webpack.DefinePlugin, [{
VERSION_PLACEHOLDER: JSON.stringify(version), VERSION_PLACEHOLDER: JSON.stringify(releaseVersion),
}]); }]);
config.plugins.delete('hot'); config.plugins.delete('hot');
config.devServer.hot(false); config.devServer.hot(false);