新增 npm run sync-moodle:一键同步播放器资源到 Moodle 插件仓库

This commit is contained in:
王阳
2026-07-21 16:52:47 +08:00
parent be445f2899
commit ab73938a80
3 changed files with 24 additions and 1 deletions
+1
View File
@@ -47,6 +47,7 @@ MoePlayer —— 一款中文友好的开源网页视频播放器(MIT 协议
- **改动 `src/` 后必须执行 `npm run build`** 重新生成产物;`moeplayer/js/``moeplayer/css/` 下的 js、css 均为生成物,勿手改
- 皮肤机制:全部主题相关值是 CSS 自定义属性(`--moe-*`),定义在 `.moeplayer, .moeplayer-menu, .moeplayer-error` 作用域(菜单/错误框挂在 body 下);按钮图标为 SVG data-URI + CSS mask,颜色跟随 `--moe-icon-color`,不再使用雪碧图 PNG;换肤=覆盖变量,新增主题=在 `src/css/themes/` 加一个变量文件并登记到 `scripts/build-css.js` 的 themes 清单
- 升级依赖:改 `package.json` 版本号后 `npm install && npm run build`
- Moodle 插件资源同步:`npm run sync-moodle` 把构建产物 `moeplayer/` 拷贝到同级目录的 `moodle-media_moeplayer` 插件仓库(播放器升级后执行,插件仓库另行提交)
- 运行时机制:播放器用 `getPath()` 定位自身所在目录,按需动态 `<script>` 加载同级 `hls.js/` 等目录里的文件,库挂全局变量(`Hls`/`mpegts`)。**这个目录结构约定不能破坏**
- 插件机制:未显式指定 `plug` 时按 URL 扩展名自动识别插件(`.m3u8`→hls.js`.flv`/`.ts`/`.m2ts`→mpegts.js,识别不到走原生播放),只填 `vars['plug']`canPlay 原生分流不变(iOS 上 m3u8 仍走原生 HLS);flv 播放基于 mpegts.js`plug:'flv.js'` 保留为兼容别名;`plug:'dash.js'` 已移除
- rollup 配置要点:`treeshake: false`(完整保留所有工具函数,与旧单文件一致);UMD `name: 'MoePlayer'``exports: 'default'`,CJS/AMD/全局变量行为与旧 UMD 等价
+2 -1
View File
@@ -6,7 +6,8 @@
"scripts": {
"build": "rollup -c && node scripts/build-css.js && node scripts/copy-libs.js",
"test": "node scripts/smoke.test.js",
"serve": "node scripts/serve.js 8000"
"serve": "node scripts/serve.js 8000",
"sync-moodle": "node scripts/sync-moodle.js"
},
"dependencies": {
"hls.js": "^1.6.10",
+21
View File
@@ -0,0 +1,21 @@
/*
* 同步播放器资源到 Moodle 插件仓库
* 把构建产物 moeplayer/ 整个拷贝到 ../moodle-media_moeplayer/moeplayer/
* 用法:npm run build 之后执行 node scripts/sync-moodle.js
*/
const fs = require('fs');
const path = require('path');
const src = path.resolve(__dirname, '..', 'moeplayer');
const dest = path.resolve(__dirname, '..', '..', 'moodle-media_moeplayer', 'moeplayer');
if (!fs.existsSync(path.dirname(dest))) {
console.error('未找到插件仓库目录: ' + path.dirname(dest));
console.error('请确认 moodle-media_moeplayer 与本仓库同级。');
process.exit(1);
}
fs.rmSync(dest, { recursive: true, force: true });
fs.cpSync(src, dest, { recursive: true });
console.log('已同步: ' + src + ' -> ' + dest);
console.log('提示:别忘了在插件仓库提交并视情况递增 version.php 的 $plugin->version');