- 目录 ckplayer/ → moeplayer/,核心文件/皮肤/图片同步改名 - 全局 API:new MoePlayer(...),UMD 导出 global.MoePlayer - CSS 类名 ckplayer-ckplayer-* 折叠为 moeplayer-*,JS 与 CSS 同步 - 语言包全局变量、cookie 名、getPath() 脚本名判断同步 - 移除右键菜单默认指向旧官网的 link - 构建与 index.html 同步更新
66 lines
2.3 KiB
JavaScript
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);
|
|
});
|