#deprecated #web-dev #tiny #file-watcher #mainly #task #floof

废弃 watchboi

已废弃:该项目已被重命名为 'floof'。如果您对 'watchboi' 这个名字感兴趣,请与我联系 :)

1 个不稳定版本

0.1.1 2020年9月23日
0.1.0 2020年7月10日

#20 in #file-watcher

MIT/Apache

2KB

Floof

Floof 已不再开发!

请查看 penguin 代替!它提供了 Floof 使用的开发服务器。

我放弃这个项目的主要原因是,我现在认为构建脚本应该用某种真实的脚本/编程语言来编写。而不仅仅是 YAML 文件,在 Floof 上定义了一个非常糟糕的 "脚本语言"。

我使用 Floof 很久,一直在调整它的 "语言"/语法/格式。我确实喜欢它的某些方面。但我一直发现自己想要更多的方式来抽象或去重逻辑。即使在 Floof 中的 "任务" 可以由其他任务调用,这仍然会经常发生。我想要做很多 Floof 还无法做到的事情。所以我不得不在 Floof 中实现它,使其更大,或者调用外部程序。使用真实、成熟的编程/脚本语言可以解决这些问题中的大部分。

此外,Floof 成成了一个相当大的项目。我已经有了太多的项目,以至于我无法全部处理!所以我需要停止在那些对我来说不是很重要的事情上浪费时间。



旧的 README

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

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

特性:

  • 运行任意命令
  • 监视文件更改(带去抖动)
  • 自动在浏览器中重新加载页面
  • HTTP 服务器
    • 反向代理(通常指向您的后端应用程序)
    • 注入 JS 代码以实现 "自动重新加载"
    • 静态文件服务器
  • 微型构建系统
  • 平台无关的文件系统操作(复制等)
  • 模板以支持某些情况下的零配置使用

安装

目前最好的方法是从 crates.io 安装。您需要 Rust 和 Cargo 来做到这一点,因为您需要自己编译应用程序。

cargo install floof

在某个时候,我将开始在 GitHub 发布中附加预编译的二进制文件。

示例

期望在项目根目录或运行 floof 的目录下(例如 Makefile)存在一个 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 License, Version 2.0 或 MIT 许可证的约束,请参阅Apache License, Version 2.0MIT 许可证
除非您明确声明,否则您提交给此项目的任何有意贡献,如 Apache-2.0 许可证中定义的,将如上所述双重许可,而不附加任何额外条款或条件。

无运行时依赖