12 个版本
0.5.7 | 2022 年 1 月 22 日 |
---|---|
0.5.5 | 2022 年 1 月 21 日 |
0.5.3 | 2019 年 12 月 5 日 |
0.5.1 | 2019 年 11 月 15 日 |
0.1.0 | 2019 年 1 月 30 日 |
#2933 在 Rust 模式
用于 2 crates
8KB
打包器
打包器是一个库,使用宏魔法帮助您将静态文件打包到二进制文件中。当您以开发模式构建时,它将像往常一样从您的文件系统中获取,但当您使用 --release
构建,它将把资产打包到您的二进制文件中!
联系方式
作者:Michael Zhang, Nathan Ringo
许可证:MIT
lib.rs
:
打包器是一个库,使用宏魔法帮助您将静态文件打包到二进制文件中。以下是实现方法:
步骤 1:包含
在您的 Cargo.toml
中包含该crate
[dependencies]
packer = "0.5"
步骤 2:派生
开始从您的结构体派生 Packer
。您需要提供一个 source
属性来指示它应该从中拉取的目录。路径相对于crate根目录。
use packer::Packer;
#[derive(Packer)]
#[packer(source = "tests/basic")]
struct Assets;
步骤 3:使用它!
现在您可以使用 get
函数访问任何文件
use packer::Packer;
let data: Option<&'static [u8]> = Assets::get("kermit.jpg");
您还可以选择列出已存储的所有文件。
use packer::Packer;
let files /*: impl Iterator<Item = &'static str>*/ = Assets::list();
// Result (with no guarantee of order):
// files = ["tests/basic/first/kermit.jpg", "tests/basic/second/ignored.x", "tests/basic/second/LICENSE"]
(有关 Packer 特性的完整方法列表,请参阅文档。)
当您以开发模式构建时,它将像往常一样从您的文件系统中获取,但当您使用 --release
构建,它将把资产打包到您的二进制文件中!
忽略路径
您可以选择使用 ignore
选项忽略某些路径
#[derive(Packer)]
#[packer(source = "tests/basic/second", ignore = "*.x")]
struct Assets;
// using BTreeSet since there's no guarantee of order
assert_eq!(Assets::list().into_iter().collect::<BTreeSet<_>>(),
vec!["tests/basic/second/LICENSE"].into_iter().collect::<BTreeSet<_>>());
移除前缀
默认情况下,路径将保留前缀。例如,如果您的文件位于相对于项目根目录的 static/index.html
,则打包版本中的路径也将是 static/index.html
。如果您希望它只是 index.html
,请按以下方式配置 prefixed
选项
#[derive(Packer)]
#[packer(source = "tests/basic", prefixed = false)]
struct Assets;
默认情况下,此选项设置为 true。
依赖项
~1.6–9.5MB
~81K SLoC