1 个不稳定版本
0.1.0 | 2020年9月23日 |
---|
#17 in #file-watcher
68KB
1.5K SLoC
Fluff
Fluff 是一种语言和技术栈无关的、易于使用的开发服务器、文件监视器和小型构建系统。由于其能够在浏览器中自动重新加载应用程序的功能,因此它主要适用于 web 开发(即您在浏览器中检查软件的地方)。对于其他项目,可能更适合使用 cargo watch 或 watchexec(并且这些工具更加成熟)。
特性:
- 运行任意命令
- 监视文件更改(具有防抖功能)
- 自动在浏览器中重新加载页面
- HTTP 服务器
- 反向代理(通常指向您的后端应用程序)
- 注入 JS 代码以实现“自动重新加载”
- 静态文件服务器
- 小型构建系统
- 平台无关的文件系统操作(复制等)
- 模板以支持在某些情况下无需配置即可使用
安装
目前最佳方式是从 crates.io
安装。您需要 Rust 和 Cargo 来执行此操作,因为您需要自己编译应用程序。
cargo install floof
在某个时候,我将开始在 GitHub 发布中附加预编译的二进制文件。
示例
项目根目录或您运行 floof
的目录中预期存在一个 floof.yaml
文件。该文件定义了需要运行的操作并配置了一系列其他设置。以下是一个简单项目的示例,该项目使用 Rust 后端服务器,该服务器提供 HTML 并监听端口 3030。
default:
- concurrently:
- http:
proxy: 127.0.0.1:3030
- watch:
paths:
- Cargo.toml
- Cargo.lock
- src/
run:
- reload: # This will wait for port 3030 to become available
- cargo run # This long running command is killed on file changes
在目录中运行 floof
时,输出类似于以下内容
════════════╡ [default][http] Listening on http://127.0.0.1:8030
════════════╡ ▶️ [default][command] running: cargo run
Compiling floof-example v0.0.0
Finished dev [unoptimized + debuginfo] target(s) in 2.21s
Running `target/debug/floof-example`
... output from your server application ...
════════════╡ ♻️ [default][http] Reloading all active sessions
然后您应该在浏览器中打开 localhost:8030
。这将显示与您的实际后端服务器(监听在 localhost:3030
)完全相同的内容,因为 floof
作为反向代理工作。但是,floof
注入了一个小的 JS 片段,负责在发生变化时在您的浏览器中自动重新加载页面。此片段通过 Web Sockets 与 floof
通信。
当更改文件时
════════════╡ 🛑 [default][watch] change detected while executing operations! Cancelling operations, then debouncing for 500ms...
════════════╡ 🔥 [default][watch] change detected: running all operations...
════════════╡ ▶️ [default][command] running: cargo run
... output from your server application ...
════════════╡ ♻️ [default][http] Reloading all active sessions
本项目的状态
这个项目真的很年轻,很多东西可能还会出错!还有很多功能缺失。我创建这个项目只是为了帮助我开发正在做的另一个项目。
许可证
您可以选择以下任一许可证进行许可:Apache许可证2.0版本或MIT许可证。除非您明确表示否则,根据Apache-2.0许可证的定义,您提交的任何有意包含在本项目中的贡献,将按照上述方式双重许可,不附加任何额外条款或条件。
依赖项
~14–23MB
~339K SLoC