- 按 URL 扩展名自动识别插件(.m3u8→hls.js,.flv/.ts/.m2ts→mpegts.js),iOS 上 m3u8 仍走原生 HLS - flv 播放改由 mpegts.js 承担,移除 flv.js 依赖,plug:'flv.js' 保留兼容别名 - 修复 plug:'dash.js' 调用不存在函数的死代码 bug - mpegts 能力判断由 mseLivePlayback 放宽为 isSupported()(修复部分浏览器点播被误杀) - 移动端:iOS 原生全屏状态同步、iPad/iPod UA 识别、X5 同层播放属性、进度/音量条触摸拖动、触摸坐标滚动偏移修正 - 新增 Playwright 冒烟测试(npm test)与支持 Range 的本地服务器(npm run serve) - 文档说明:测试禁用 python http.server(不支持 Range,mp4 无法 seek)
45 lines
1.6 KiB
JavaScript
45 lines
1.6 KiB
JavaScript
/*
|
|
* 构建脚本(第二步)
|
|
* 功能:从 node_modules 拷贝运行时依赖(hls.js/mpegts.js)到 moeplayer/ 对应目录
|
|
* 播放器运行时会按需动态加载这些文件,目录结构需与 getPath() 的约定保持一致
|
|
* 第一步(rollup 打包压缩)见 rollup.config.js
|
|
* 用法:npm run build(即 rollup -c && node scripts/copy-libs.js)
|
|
*/
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const root = path.resolve(__dirname, '..');
|
|
|
|
// 运行时依赖拷贝清单:[npm包名, 产物目录, 需要拷贝的文件]
|
|
const libs = [
|
|
['hls.js', 'hls.js', ['hls.min.js', 'hls.min.js.map', 'LICENSE']],
|
|
['mpegts.js', 'mpegts.js', ['mpegts.js', 'mpegts.js.map', 'LICENSE']]
|
|
];
|
|
|
|
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 + ')');
|
|
}
|
|
}
|
|
|
|
try {
|
|
copyLibs();
|
|
console.log('依赖拷贝完成');
|
|
} catch (err) {
|
|
console.error('拷贝失败:', err);
|
|
process.exit(1);
|
|
}
|