18 个版本
0.9.3 | 2022年2月14日 |
---|---|
0.9.1 | 2021年11月8日 |
0.8.3 | 2021年5月12日 |
0.8.1 | 2021年1月26日 |
0.7.1 | 2020年12月28日 |
#62 in #serve
62 每月下载量
49KB
790 行
此仓库现在已废弃,转而使用 xtask-wasm。仅接受补丁修复。
wasm-run
概述
构建工具,用于替代 cargo run
来构建 WASM 项目。就像 webpack 一样,wasm-run
提供了大量的自定义选项。
要构建您的 WASM 项目,您通常需要一个外部工具,如 wasm-bindgen
、wasm-pack
或 cargo-wasm
。而 wasm-run
采用不同的方法:它是一个库,您将其作为项目的依赖项安装。因此,您不需要任何外部工具,工具作为依赖项的一部分构建,这使得 CI 更容易设置,并减少了新加入项目的人员的麻烦。
要为生产构建您的项目,您可以使用命令 cargo run -- build
。您还可以运行一个开发服务器,在代码更改时自动重新构建:cargo run -- serve
。它不会重新构建所有内容,只有后端在更改时才重新构建后端,或者前端在更改时才重新构建前端。
请注意,在 --
和 build
以及 --
和 serve
之间存在空格!
这个库的主要优点之一是它提供了更高的定制性:你可以在构建过程中设置一些钩子,以便定制构建目录或使用模板生成你的index.html,下载一些CSS,等等。我个人用它来通过将CSS和JS打包到index.html
中来减少文件数量,因此我只有两个文件(index.html
,app_bg.wasm
)。
示例
这里有3个基本示例,帮助你快速入门
- 一个针对仅前端应用的"frontend-only"示例,当检测到文件更改时,会重新构建应用;
- 一个使用Web框架Rocket(后端)的"backend-and-frontend"示例,Rocket本身用于开发期间提供服务(任何文件更改也会被检测到,并自动重新构建和重启)。
- 一个添加了名为
build-docker-image
的自定义CLI命令的"custom-cli-command"示例,该命令构建后端、前端并将整个内容打包到容器镜像中。
用法
有关钩子的所有详细信息,请参阅main
宏。
附加信息
- 您可以使用此库在项目的
examples/
目录中构建示例。使用以下命令:cargo run --example your_example -- serve
。但您需要指定项目中WASM crate的名称,并且它必须在工作区中存在。请参阅"run-an-example"示例。 - 如果您想使用自己的后端,您需要通过禁用默认功能来禁用
dev-server
功能。您可以使用full-restart
功能强制后端在文件更改时也重新编译(否则只有前端会重新编译)。您还需要将run_server
指定给宏参数以运行您的后端。 - 您可以通过添加枚举变体到
enum
中来向CLI添加命令。 - 您可以通过覆盖它们来向
Build
和Serve
命令添加参数。请查阅main
宏的文档。 - 如果您运行
cargo run -- serve --profiling
,WASM将被优化。
功能
prebuilt-wasm-opt
:如果您禁用默认功能并启用此功能,将从GitHub下载wasm-opt的二进制文件并用于优化WASM。默认情况下,wasm-opt是在依赖项中编译的(binaryen
)。这在你遇到构建binaryen-sys
问题时很有用。(目前Netlify上无法构建binaryen
。)sass
:支持SASS和SCSS。所有在目录styles/
、assets/
、sass/
和css/
中找到的SASS和SCSS文件都将自动转换为CSS并放置在构建目录中。这可以通过重写以下配置来实现:BuildArgs::build_sass_from_dir
、BuildArgs::sass_lookup_directories
、BuildArgs::sass_options
或在Hooks::post_build
钩子中完全重写。sass-rs
在wasm-run
的序言中重新导出以实现此目的。full-restart
:当此功能激活时,当检测到开发时为文件提供服务时发生变化(cargo run -- serve
),命令将完全重启。这对于使用自定义后端的自定义serve
命令,并且需要检测后端代码本身的变化时很有用。
许可证:MIT OR Apache-2.0
依赖关系
~15–32MB
~509K SLoC