/* * 构建脚本(第二步) * 功能:从 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); }