Nightly 每日构建、从源码编译与 npm 包
Nightly vs 稳定版
GitHub Releases 里除了带版本号的稳定版(v0.7.1),还有一个 "Nightly" 标签的 Release——每天从 master 分支自动构建一次,包含当天的所有提交。
| 维度 | 稳定版 | Nightly |
|---|---|---|
| 更新频率 | 季度级(v0.7.0 → v0.7.1) | 每天一次 |
| 测试覆盖 | 一轮完整回归 | 只跑 CI 单测 + 冒烟 |
| 适合人群 | 普通用户、站长线上部署 | 想追新功能、想验证某个 bug 是否修复、向项目贡献的开发者 |
| 文件位置 | GitHub Releases 带版本号 tag 的 Release | GitHub Releases 里专门一个 "Nightly" tag |
什么时候该换 nightly
- 你发现了一个 bug → 搜 GitHub Issue Tracker → 官方说「已在 master 修复」→ 下载 nightly 验证
- 稳定版里 AVM 2 某个 API 还没实现 → 去 nightly 看看有没有
- 想贡献代码、在本地编译测试
风险
Nightly 可能引入新 bug——比如今天的 nightly 能跑的 SWF,明天的 nightly 里被改坏了。日常用稳定版,出问题再换 nightly 定位。
从源码构建
先决条件
- Rust 稳定版:rustup 默认的 stable channel 就行(nightly Rust 不需要)
- Java(JRE):必须在 PATH 里——Ruffle 的某些 ActionScript 内置类库构建时用 Java
- Linux 额外依赖:libasound2-dev、libxcb-shape0-dev、libxcb-xfixes0-dev、libgtk-3-dev、libudev-dev、libxcb-xinput-dev、libxcb-xkb-dev、libxcb-cursor-dev、default-jre-headless、cmake、g++
克隆仓库
git clone https://github.com/ruffle-rs/ruffle.git
cd ruffle
构建桌面版
cargo build --release --package=ruffle_desktop
产物在 target/release/ruffle_desktop.exe(Windows)或 target/release/ruffle_desktop(Linux / macOS)。
构建 Web / 扩展版
需要 wasm-pack。仓库的 web/ 目录有单独的 README,按那里的说明走:
cd web
wasm-pack build --target web --out-dir ../../pkg
产物在根目录 pkg/ 里,包含 ruffle.js + ruffle_wasm.js + ruffle.wasm。
构建 Scanner 和 Exporter
cargo build --release --package=ruffle_scanner
cargo build --release --package=exporter
开发者反馈
从源码构建成功后,欢迎在 GitHub Issue Tracker 上提交 PR、或者在 Discord 上报告编译 / 构建问题。项目对新贡献者友好,CONTRIBUTING.md 里有详细指南。
npm 包 @ruffle-rs/ruffle
用途
如果你是前端开发者、项目用 npm / pnpm / yarn 管理依赖,想把 Ruffle 作为项目依赖引入——直接:
npm install @ruffle-rs/ruffle
包名就是 @ruffle-rs/ruffle,发布在 npm registry 上,每次 stable 版本发布都会同步一个 npm 包。
在项目里使用
最简单(polyfill 自动模式):
import "@ruffle-rs/ruffle";
导入完自动开启 polyfill,页面上的 Flash 标签会被替换。想手动控制:
import Ruffle from "@ruffle-rs/ruffle";
// 或:import { RufflePlayer } from "@ruffle-rs/ruffle";
const player = RufflePlayer.newest().createPlayer();
document.getElementById("container").appendChild(player);
player.load("game.swf");
版本锁
npm 包的版本号跟 GitHub Releases 严格对应。npm install @ruffle-rs/ruffle@0.7.1 装稳定版,@ruffle-rs/ruffle@nightly 装 nightly。
许可证(Apache 2.0 / MIT 双许可)
Ruffle 仓库根目录的 LICENSE 文件明确是双许可:你可以选 Apache License 2.0 或 MIT License,两者择一。这意味着:
- 商业项目可以直接集成
- 修改后分发需要保留版权声明
- 不需要把你的项目也开源(MIT 允许闭源,Apache 2.0 也允许闭源但要求保留 notice)