1 个不稳定版本
0.1.0 | 2021 年 10 月 9 日 |
---|
#40 在 #serve
59 每月下载量
16KB
122 行
serve-directory
serve-directory
是一个简单的命令行实用程序,用于从命令行提供静态文件。在一般情况下,我们确实意味着 简单。要启动一个服务器,提供当前目录及其子目录的内容,只需运行可执行文件而不带参数。
$ serve-directory
文件通过它们相对于目标文件夹的相对位置进行访问。考虑以下(简化的)Rust 项目结构
Project Structure: Route:
. /
├─ src/ /src
│ ├─ main.rs /src/main.rs
│ └─ stuff.rs /src/stuff.rs
├─ target/ /target
│ └─ debug/ /target/debug
│ └─ app.exe /target/debug/app.exe
└─ README.md /README.md
如您所见,文件结构和路由之间的相关性相当自然。
我为什么要关心呢?
有时,配置网络文件夹的工作量比在机器之间传递几个文件要大得多,尤其是如果您正在将文件移动到或从无头系统。虽然您可以使用类似 SFTP 的工具,但 serve-directory
提供了一种在 Web 浏览器中浏览文件系统的良好图形界面,这应该对新用户来说不那么令人生畏。它还允许下载多个客户端的文件,而无需多次通过 SSH 登录。
它也很简单,不需要任何额外的设置(假设用户已编译了可执行文件)。大多数用户已经在他们的机器上安装了浏览器。而且,如果用户没有,他们可以使用 curl
或 wget
通过 HTTP 下载文件。
虽然很明显需要一个简单且易于使用的 HTTP 文件服务器,但为什么您要使用 serve-directory
而不是 NodeJS 中的更成熟的选项(如 serve 包)呢?我必须承认,在许多情况下,serve 可能更适合您的需求。然而,由于 serve-directory
是用 Rust 编写的,并且是本地编译的,因此它可以作为一个单独的可执行文件使用和分发,而无需运行时。
安装和使用
从 crates.io 安装此应用程序最新版本的推荐方法是使用 cargo
$ cargo install serve-directory
或者,您可以使用 cargo 从源代码构建它,然后将应用程序添加到您的 PATH
。
$ cargo build --release
$ cp ./target/release/serve-directory ~/bin/serve-directory
应用程序的不同功能通过命令行参数进行控制。您可以使用 -h
或 --help
标志查看完整的参数列表。
$ serve-directory --help
通常情况下,只需将应用程序指向所需目录。程序将尝试确定您的当前IP地址并将其绑定到该接口。要更改应用程序绑定的端口,请使用-p
标志。例如,此命令将在端口80上为~/www
目录提供内容。
请注意,在实际操作中,您可能需要以root权限运行程序才能访问较低编号的端口。只需在命令开头添加
sudo
即可。
$ serve-directory -p 80 ~/www
致谢
特别感谢serve项目为本工具提供灵感!还要感谢Material-UI在目录网页上使用的图标!
本项目的实现得益于以下优秀的库
箱 | 所有者 |
---|---|
build_html | 约瑟夫·斯库巴尔 |
环境记录器 | Rust项目开发者 |
静态懒加载 | Rust库团队 |
本地IP地址 | 王易康 |
日志 | Rust项目开发者 |
结构优化 | 纪尧姆·皮诺 |
tokio | tokio贡献者 |
战斧 | 肖恩·麦克阿瑟 |
当然,还有Rust语言!
许可证
本项目受MIT许可证的许可。请随意使用和混合您想要的。
版权(C)2020-21 约瑟夫·斯库巴尔
依赖关系
~13–25MB
~336K SLoC