forked from ricobuilds/gpt2markdown
-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.prod.js
82 lines (72 loc) · 2.76 KB
/
webpack.prod.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
const path = require('path');
const fs = require('fs');
const semver = require('semver');
const CopyPlugin = require('copy-webpack-plugin');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const BeforeRunWebpackPlugin = require('@panhezeng/before-run-webpack-plugin');
let pkg = require('./package.json');
function modify(buffer) {
const today = new Date();
const now = new Date();
// 获取当年1月1日的时间
const yearStart = new Date(now.getFullYear(), 0, 1);
const year = today.getFullYear();
const month = (today.getMonth() + 1).toString().padStart(2, '0'); // month从0开始计数,所以需要+1
const hms = `${today.getHours().toString().padStart(2, '0')}${today.getMinutes().toString().padStart(2, '0')}.${today.getSeconds().toString().padStart(2, '0')}`;
const day = today.getDate().toString().padStart(2, '0');
const dateStr = `${year}${month}${day}`;
// 计算从当年1月1日到当天的毫秒数
const milliseconds = now.getTime() - yearStart.getTime();
// 将毫秒数转换成天数并向下取整
const days = Math.floor(milliseconds / (24 * 60 * 60 * 1000));
// 获取当天零点的时间
const today1 = new Date(now.getFullYear(), now.getMonth(), now.getDate());
// 计算当天所经历的秒数
const uniqueId = Math.floor((now.getTime() - today1.getTime()) / 1000);
// copy-webpack-plugin passes a buffer
var manifest = JSON.parse(buffer.toString());
// make any modifications you like, such as
// manifest.version = pkg.version +'.'+ ~~((Date.now()-1670000000000)/1000);
manifest.version = `${pkg.version}.${days}.${hms}`;
// pretty print to JSON with two spaces
manifest_JSON = JSON.stringify(manifest, null, 2);
return manifest_JSON;
}
function updateVersion() {
const manifestPath = path.join(__dirname, 'src', 'manifest.json');
const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf-8'));
manifest.version = semver.inc(manifest.version, 'patch');
fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));
}
module.exports = {
mode:"production",
entry: {
script: path.resolve(__dirname, 'src/script.js'),
background: path.resolve(__dirname, 'src/background.js'),
// popup: path.resolve(__dirname, 'src/popup.js'),
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].js'
},
plugins: [
new CleanWebpackPlugin(),
new CopyPlugin({
patterns: [
{ from: 'src/manifest.json',
// transform (content, path) {
// return modify(content)
// },
to: 'manifest.json' },
{ from: 'public/images', to: 'images' },
// { from: 'public/popup.html', to: '.' },
]
}),
new BeforeRunWebpackPlugin({
cb: function() {
console.log("before run");
updateVersion();
}
})
]
};