42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
const { execSync } = require('child_process');
|
|
const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
|
|
const fse = require('fs-extra');
|
|
|
|
// get version from git branch name,
|
|
// e.g. release/1.0.7 => 1.0.7
|
|
// release/1.0.7-beta => 1.0.7 (beta)
|
|
// release/1.0.7-beta.0 => 1.0.7 (beta)
|
|
function getVersion() {
|
|
const gitBranchName = execSync('git rev-parse --abbrev-ref HEAD', { encoding: 'utf-8' });
|
|
const reBranchVersion = /^(?:[\w-]+\/)(\d+\.\d+\.\d+)(-?beta)?(?:\.\d+)?$/im;
|
|
|
|
const match = reBranchVersion.exec(gitBranchName);
|
|
if (!match) {
|
|
console.warn(`[engine] gitBranchName: ${gitBranchName}`);
|
|
return 'N/A';
|
|
}
|
|
|
|
const [_, version, beta] = match;
|
|
|
|
return beta && beta.endsWith('beta') ? `${version}-beta` : version;
|
|
}
|
|
|
|
const releaseVersion = getVersion();
|
|
|
|
module.exports = ({ context, onGetWebpackConfig }) => {
|
|
onGetWebpackConfig((config) => {
|
|
config.resolve
|
|
.plugin('tsconfigpaths')
|
|
.use(TsconfigPathsPlugin, [{
|
|
configFile: './tsconfig.json',
|
|
}]);
|
|
config
|
|
.plugin('define')
|
|
.use(context.webpack.DefinePlugin, [{
|
|
VERSION_PLACEHOLDER: JSON.stringify(releaseVersion),
|
|
}]);
|
|
config.plugins.delete('hot');
|
|
config.devServer.hot(false);
|
|
});
|
|
};
|