- 新增 package.json/scripts/build.js,npm run build 一键完成压缩与依赖拷贝 - hls.js(1.6.16)/flv.js(1.6.2)/mpegts.js(1.8.0) 由 vendored 改为 npm 依赖 - 删除 Source File/(PSD 与 Flash 遗留 crossdomain.xml) - 新增 AGENTS.md 项目说明与改造路线图
66 lines
2.3 KiB
JavaScript
66 lines
2.3 KiB
JavaScript
/*
|
|
* 构建脚本
|
|
* 功能:
|
|
* 1. 使用 terser 将 ckplayer/js/ckplayer.js 压缩为 ckplayer.min.js
|
|
* 2. 从 node_modules 拷贝运行时依赖(hls.js/flv.js/mpegts.js)到 ckplayer/ 对应目录
|
|
* 播放器运行时会按需动态加载这些文件,目录结构需与 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, 'ckplayer/js/ckplayer.js');
|
|
const dist = path.join(root, 'ckplayer/js/ckplayer.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('压缩完成: ckplayer/js/ckplayer.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, 'ckplayer', 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('拷贝完成: ckplayer/' + dir + '/ (' + pkg + '@' + version + ')');
|
|
}
|
|
}
|
|
|
|
(async () => {
|
|
await minifyCore();
|
|
copyLibs();
|
|
console.log('构建完成');
|
|
})().catch(err => {
|
|
console.error('构建失败:', err);
|
|
process.exit(1);
|
|
});
|