1 个不稳定版本
0.1.1 | 2020年9月23日 |
---|---|
0.1.0 |
|
#20 in #file-watcher
2KB
Floof
Floof 已不再开发!
请查看 penguin 代替!它提供了 Floof 使用的开发服务器。
我放弃这个项目的主要原因是,我现在认为构建脚本应该用某种真实的脚本/编程语言来编写。而不仅仅是 YAML 文件,在 Floof 上定义了一个非常糟糕的 "脚本语言"。
我使用 Floof 很久,一直在调整它的 "语言"/语法/格式。我确实喜欢它的某些方面。但我一直发现自己想要更多的方式来抽象或去重逻辑。即使在 Floof 中的 "任务" 可以由其他任务调用,这仍然会经常发生。我想要做很多 Floof 还无法做到的事情。所以我不得不在 Floof 中实现它,使其更大,或者调用外部程序。使用真实、成熟的编程/脚本语言可以解决这些问题中的大部分。
此外,Floof 成成了一个相当大的项目。我已经有了太多的项目,以至于我无法全部处理!所以我需要停止在那些对我来说不是很重要的事情上浪费时间。
旧的 README
Floof 是一个语言和技术栈无关的、易于使用的开发服务器、文件监视器和微型构建系统。由于它能够自动在浏览器中重新加载您的应用程序,因此它主要适用于 Web 开发(即您在浏览器中检查您的软件的地方)。对于其他项目,cargo watch 或 watchexec 可能更适合(而且那些更加成熟)。
特性:
- 运行任意命令
- 监视文件更改(带去抖动)
- 自动在浏览器中重新加载页面
- 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.0 或 MIT 许可证。除非您明确声明,否则您提交给此项目的任何有意贡献,如 Apache-2.0 许可证中定义的,将如上所述双重许可,而不附加任何额外条款或条件。