#build-system #web-dev #tiny #reload #watch #mainly #file-watcher

构建 fluff

一种语言无关、易于使用的开发服务器、文件监视器和小型构建系统,主要适用于web开发

1 个不稳定版本

0.1.0 2020年9月23日

#17 in #file-watcher

MIT/Apache

68KB
1.5K SLoC

Fluff

CI status of master Crates.io Version Crates.io Downloads

Fluff 是一种语言和技术栈无关的、易于使用的开发服务器、文件监视器和小型构建系统。由于其能够在浏览器中自动重新加载应用程序的功能,因此它主要适用于 web 开发(即您在浏览器中检查软件的地方)。对于其他项目,可能更适合使用 cargo watchwatchexec(并且这些工具更加成熟)。

特性:

  • 运行任意命令
  • 监视文件更改(具有防抖功能)
  • 自动在浏览器中重新加载页面
  • 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