A prototype Bevy CLI tool intended to streamline common tasks when working on projects. Please see the initial scope document and original issue for history and motivation. The CLI's current features include:
- Project generation from a template
- A custom, Bevy-specific linter
- Out-of-the-box support for building and running your Bevy app in the browser
If you need assistance or want to help, reach out to the bevy_cli
working group channel in the Bevy Discord.
At this point, the CLI is not published as a package yet and needs to be installed via git:
cargo install --git https://github.com/TheBevyFlock/bevy_cli --locked bevy_cli
The CLI makes it easy to build and run web apps made with Bevy, using bevy build web
and bevy run web
.
It takes care of compiling the app to Wasm, creating JavaScript bindings and serving it on a local web server to test it out.
Necessary tools will also be installed automatically.
Note
The arguments you know from cargo
(like --release
) must be placed before the web
subcommand, while the web-specific options (like --open
) must be placed afterwards, e.g.
bevy run --release web --open
Use the bevy run web
command to run your app in the browser.
The app will be automatically served on a local web server, use the --open
flag to automatically open it in the browser.
The server will provide a default index.html
serving as entrypoint for your app.
It features a loading screen and some other utilities.
If you want to customize it, simply create a web/index.html
file to override the default behavior.
Other files in the web
folder will also be included in your application.
To deploy your app on a web server, it's often necessary to bundle the binary, assets and web files into a single folder.
Using bevy build web --bundle
, the CLI can create this bundle for you automatically.
It will be available in the target/bevy_web
folder, see the command's output for the full file path.
Web apps have different needs than native builds when it comes to compilation. For example, binary size is a lot more important for web apps, as it has a big influence on the loading times.
The Bevy CLI provides custom web
and web-release
compilation profiles, which are optimized for web apps.
They are used by default for the web sub-commands (depending on the --release
flag).
The profiles can be customized as usual in Cargo.toml
:
[profile.web-release]
inherits = "release"
opt-level = "z"
Alternatively, you can change the profile entirely, e.g. bevy run --profile=foo web
.
The CLI may include interactive prompts if parts of the required tooling is not installed on the system. These prompts will break your pipeline if they are triggered in CI.
To avoid this problem, use the --yes
flag to automatically confirm the prompts:
bevy build --yes web
The Bevy CLI is licensed under either of
- Apache License, Version 2.0 (
LICENSE-APACHE
or http://www.apache.org/licenses/LICENSE-2.0) - MIT license (
LICENSE-MIT
or http://opensource.org/licenses/MIT)
at your option.
Please see CONTRIBUTING.md
for more information!
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.