#cargo #build #run #back-end #front-end #serve

构建 wasm-run

替代 cargo run 的构建 WASM 项目的构建工具

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

Download history 1/week @ 2024-03-11 63/week @ 2024-04-01

62 每月下载量

MIT/Apache

49KB
790

此仓库现在已废弃,转而使用 xtask-wasm。仅接受补丁修复。

wasm-run

Rust Latest Version Docs.rs LOC Dependency Status License

概述

构建工具,用于替代 cargo run 来构建 WASM 项目。就像 webpack 一样,wasm-run 提供了大量的自定义选项。

要构建您的 WASM 项目,您通常需要一个外部工具,如 wasm-bindgenwasm-packcargo-wasm。而 wasm-run 采用不同的方法:它是一个库,您将其作为项目的依赖项安装。因此,您不需要任何外部工具,工具作为依赖项的一部分构建,这使得 CI 更容易设置,并减少了新加入项目的人员的麻烦。

要为生产构建您的项目,您可以使用命令 cargo run -- build。您还可以运行一个开发服务器,在代码更改时自动重新构建:cargo run -- serve。它不会重新构建所有内容,只有后端在更改时才重新构建后端,或者前端在更改时才重新构建前端。

请注意,在 --build 以及 --serve 之间存在空格!

这个库的主要优点之一是它提供了更高的定制性:你可以在构建过程中设置一些钩子,以便定制构建目录或使用模板生成你的index.html,下载一些CSS,等等。我个人用它来通过将CSS和JS打包到index.html中来减少文件数量,因此我只有两个文件(index.htmlapp_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添加命令。
  • 您可以通过覆盖它们来向BuildServe命令添加参数。请查阅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_dirBuildArgs::sass_lookup_directoriesBuildArgs::sass_options或在Hooks::post_build钩子中完全重写。sass-rswasm-run的序言中重新导出以实现此目的。
  • full-restart:当此功能激活时,当检测到开发时为文件提供服务时发生变化(cargo run -- serve),命令将完全重启。这对于使用自定义后端的自定义serve命令,并且需要检测后端代码本身的变化时很有用。

许可证:MIT OR Apache-2.0

依赖关系

~15–32MB
~509K SLoC