forked from huangxd-/danmu_api
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild-forward-widget.js
More file actions
105 lines (96 loc) · 3.61 KB
/
build-forward-widget.js
File metadata and controls
105 lines (96 loc) · 3.61 KB
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import * as esbuild from 'esbuild';
import fs from 'fs';
// 动态获取版本号
import { Globals } from './danmu_api/configs/globals.js';
// 定义要排除的UI相关模块
const uiModules = [
'./ui/template.js',
'../ui/template.js',
'../../ui/template.js',
'./ui/css/base.css.js',
'./ui/css/components.css.js',
'./ui/css/forms.css.js',
'./ui/css/responsive.css.js',
'./ui/js/main.js',
'./ui/js/preview.js',
'./ui/js/logview.js',
'./ui/js/apitest.js',
'./ui/js/pushdanmu.js',
'./ui/js/systemsettings.js',
'./utils/local-redis-util.js',
'danmu_api/ui/template.js',
'danmu_api/ui/css/base.css.js',
'danmu_api/ui/css/components.css.js',
'danmu_api/ui/css/forms.css.js',
'danmu_api/ui/css/responsive.css.js',
'danmu_api/ui/js/main.js',
'danmu_api/ui/js/preview.js',
'danmu_api/ui/js/logview.js',
'danmu_api/ui/js/apitest.js',
'danmu_api/ui/js/pushdanmu.js',
'danmu_api/ui/js/systemsettings.js',
'danmu_api/utils/local-redis-util.js'
];
let customPolyfillContent = fs.readFileSync('forward/custom-polyfill.js', 'utf8');
(async () => {
try {
await esbuild.build({
entryPoints: ['forward/forward-widget.js'], // 新的入口文件
bundle: true,
minify: false, // 暂时关闭压缩以便调试
sourcemap: false,
platform: 'neutral', // 改为neutral以避免Node.js特定的全局变量
target: 'es2020',
outfile: 'dist/logvar-danmu.js',
format: 'esm', // 保持ES模块格式
external: ['redis'],
plugins: [
// 插件:排除UI相关模块
{
name: 'exclude-ui-modules',
setup(build) {
// 拦截对UI相关模块的导入
build.onResolve({ filter: /.*ui.*\.(css|js)$|.*template\.js$|.*local-redis-util\.js$/ }, (args) => {
if (uiModules.some(uiModule => args.path.includes(uiModule.replace('./', '').replace('../', '')))) {
return { path: args.path, external: true };
}
});
}
},
// 插件:移除导出语句(仅对输出文件进行处理)
{
name: 'remove-exports',
setup(build) {
build.onEnd(async (result) => {
if (result.errors.length === 0) {
let outputContent = fs.readFileSync('dist/logvar-danmu.js', 'utf8');
// // 更通用的模式,匹配包含这四个函数名的导出语句
const genericExportPattern = /export\s*{\s*(?:\s*(?:getCommentsById|getDanmuWithSegmentTime|getDetailById|searchDanmu)\s*,?\s*){4}\s*};?/g;
outputContent = outputContent.replace(genericExportPattern, '');
// 替换 httpGet 和 httpPost
outputContent = outputContent.replace(/await\s+httpGet/g, 'await Widget.http.get');
outputContent = outputContent.replace(/await\s+httpPost/g, 'await Widget.http.post');
// 删除本地redis相关
outputContent = outputContent.replace(/.*setLocalRedisKey.*\n?/g, '\n');
outputContent = outputContent.replace(/.*updateLocalRedisCaches.*\n?/g, '\n');
// 保存修改后的内容
fs.writeFileSync('dist/logvar-danmu.js', outputContent);
}
});
}
}
],
define: {
'widgetVersion': `"${Globals.VERSION}"`
},
banner: {
js: customPolyfillContent
},
logLevel: 'info'
});
console.log('Forward widget bundle created successfully!');
} catch (error) {
console.error('Build failed:', error);
process.exit(1);
}
})();