51 lines
1.3 KiB
JavaScript
51 lines
1.3 KiB
JavaScript
const StrWebpackPlugin = require('str-webpack-plugin');
|
|
const { version } = require('./package.json');
|
|
|
|
function formatDate(input, fmt) {
|
|
let date;
|
|
if (input instanceof Date) {
|
|
date = input;
|
|
} else {
|
|
date = new Date(input);
|
|
}
|
|
var o = {
|
|
'M+': date.getMonth() + 1,
|
|
'd+': date.getDate(),
|
|
'H+': date.getHours(),
|
|
'm+': date.getMinutes(),
|
|
's+': date.getSeconds(),
|
|
'S+': date.getMilliseconds()
|
|
};
|
|
if (/(y+)/.test(fmt)) {
|
|
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
|
|
}
|
|
for (var k in o) {
|
|
if (new RegExp('(' + k + ')').test(fmt)) {
|
|
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (('00' + o[k]).substr(String(o[k]).length)));
|
|
}
|
|
}
|
|
return fmt;
|
|
}
|
|
|
|
let libVersion = `${version}.${formatDate(new Date(), "MMdd.HHmm")}`
|
|
|
|
class EnvWebPackage extends StrWebpackPlugin {
|
|
constructor({ entry, output, env }) {
|
|
super(Object.keys(entry).map((name) => {
|
|
return {
|
|
src: output,
|
|
test: new RegExp(`${name}.js`, 'g'),
|
|
replace: {
|
|
form: [/\$\{lib_env\}/g, /\$\{lib_version\}/g],
|
|
to: [env, libVersion]
|
|
}
|
|
}
|
|
}))
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
EnvWebPackage
|
|
}
|
|
|