Files
moeplayer/scripts/build.js
T
王阳 5609532c80 阶段2改名:ckplayer → MoePlayer
- 目录 ckplayer/ → moeplayer/,核心文件/皮肤/图片同步改名
- 全局 API:new MoePlayer(...),UMD 导出 global.MoePlayer
- CSS 类名 ckplayer-ckplayer-* 折叠为 moeplayer-*,JS 与 CSS 同步
- 语言包全局变量、cookie 名、getPath() 脚本名判断同步
- 移除右键菜单默认指向旧官网的 link
- 构建与 index.html 同步更新
2026-07-21 10:33:38 +08:00

66 lines
2.3 KiB
JavaScript

/*
* 构建脚本
* 功能:
* 1. 使用 terser 将 moeplayer/js/moeplayer.js 压缩为 moeplayer.min.js
* 2. 从 node_modules 拷贝运行时依赖(hls.js/flv.js/mpegts.js)到 moeplayer/ 对应目录
* 播放器运行时会按需动态加载这些文件,目录结构需与 getPath() 的约定保持一致
* 用法:npm run build
*/
const fs = require('fs');
const path = require('path');
const terser = require('terser');
const root = path.resolve(__dirname, '..');
// 运行时依赖拷贝清单:[npm包名, 产物目录, 需要拷贝的文件]
const libs = [
['hls.js', 'hls.js', ['hls.min.js', 'hls.min.js.map', 'LICENSE']],
['flv.js', 'flv.js', ['flv.min.js', 'flv.min.js.map', 'LICENSE']],
['mpegts.js', 'mpegts.js', ['mpegts.js', 'mpegts.js.map', 'LICENSE']]
];
async function minifyCore() {
const src = path.join(root, 'moeplayer/js/moeplayer.js');
const dist = path.join(root, 'moeplayer/js/moeplayer.min.js');
const code = fs.readFileSync(src, 'utf8');
const result = await terser.minify(code, {
output: {
// 保留文件头部的版权注释
comments: /^!|软件名称|版权/
}
});
if (result.error) {
throw result.error;
}
fs.writeFileSync(dist, result.code, 'utf8');
console.log('压缩完成: moeplayer/js/moeplayer.min.js (' + result.code.length + ' bytes)');
}
function copyLibs() {
for (const [pkg, dir, files] of libs) {
const pkgRoot = path.dirname(require.resolve(pkg + '/package.json'));
const targetDir = path.join(root, 'moeplayer', dir);
// 清空旧的 vendored 文件,只保留构建拷贝的产物
fs.rmSync(targetDir, { recursive: true, force: true });
fs.mkdirSync(targetDir, { recursive: true });
for (const file of files) {
const from = path.join(pkgRoot, 'dist', file);
// LICENSE 在包根目录而非 dist 目录
const fromAlt = path.join(pkgRoot, file);
const src = fs.existsSync(from) ? from : fromAlt;
fs.copyFileSync(src, path.join(targetDir, file));
}
const version = require(pkg + '/package.json').version;
console.log('拷贝完成: moeplayer/' + dir + '/ (' + pkg + '@' + version + ')');
}
}
(async () => {
await minifyCore();
copyLibs();
console.log('构建完成');
})().catch(err => {
console.error('构建失败:', err);
process.exit(1);
});