Skip to content

Commit ea85ce3

Browse files
authored
Add dist profiles with additional optimizations (#7)
1 parent 624f842 commit ea85ce3

4 files changed

Lines changed: 55 additions & 15 deletions

File tree

.github/workflows/release.yaml

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,19 @@ jobs:
3131
3232
- name: Build
3333
run: |
34-
cargo build --release --target wasm32-unknown-unknown
34+
cargo build --profile web-dist --target wasm32-unknown-unknown
3535
3636
- name: Prepare package
3737
run: |
38-
wasm-bindgen --no-typescript --out-name bevy_game --out-dir wasm --target web target/wasm32-unknown-unknown/release/${{ env.binary }}.wasm
38+
wasm-bindgen --no-typescript --out-name bevy_game --out-dir wasm --target web target/wasm32-unknown-unknown/web-dist/${{ env.binary }}.wasm
3939
cp -r assets wasm/
4040
41+
- name: Optimize Wasm
42+
uses: NiklasEi/wasm-opt-action@v2
43+
with:
44+
file: target/wasm32-unknown-unknown/web-dist/*.wasm
45+
optimize_all: true
46+
4147
- name: Package as a zip
4248
working-directory: ./wasm
4349
run: |
@@ -78,12 +84,12 @@ jobs:
7884
7985
- name: Build
8086
run: |
81-
cargo build --release --target x86_64-unknown-linux-gnu
87+
cargo build --profile dist --target x86_64-unknown-linux-gnu
8288
8389
- name: Prepare package
8490
run: |
8591
mkdir ${{ env.binary }}
86-
cp target/x86_64-unknown-linux-gnu/release/${{ env.binary }} ${{ env.binary }}/
92+
cp target/x86_64-unknown-linux-gnu/dist/${{ env.binary }} ${{ env.binary }}/
8793
cp -r assets ${{ env.binary }}/
8894
8995
- name: Package as a zip
@@ -122,12 +128,12 @@ jobs:
122128

123129
- name: Build
124130
run: |
125-
cargo build --release --target x86_64-pc-windows-msvc
131+
cargo build --profile dist --target x86_64-pc-windows-msvc
126132
127133
- name: Prepare package
128134
run: |
129135
mkdir ${{ env.binary }}
130-
cp target/x86_64-pc-windows-msvc/release/${{ env.binary }}.exe ${{ env.binary }}/
136+
cp target/x86_64-pc-windows-msvc/dist/${{ env.binary }}.exe ${{ env.binary }}/
131137
cp -r assets ${{ env.binary }}/
132138
133139
- name: Package as a zip
@@ -170,12 +176,12 @@ jobs:
170176
171177
- name: Build
172178
run: |
173-
cargo build --release --target x86_64-apple-darwin
179+
cargo build --profile dist --target x86_64-apple-darwin
174180
175181
- name: Prepare Package
176182
run: |
177183
mkdir -p ${{ env.binary }}.app/Contents/MacOS
178-
cp target/x86_64-apple-darwin/release/${{ env.binary }} ${{ env.binary }}.app/Contents/MacOS/
184+
cp target/x86_64-apple-darwin/dist/${{ env.binary }} ${{ env.binary }}.app/Contents/MacOS/
179185
cp -r assets ${{ env.binary }}.app/Contents/MacOS/
180186
181187
cat > ${{ env.binary }}.app/Contents/Info.plist << EOF

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,12 @@ itertools = "0.13"
3737
serde = { version = "1", features = ["derive"] }
3838
rstar = "0.12"
3939

40+
# Disable low-severity logs at compile time for performance.
41+
log = { version = "0.4", features = [
42+
"max_level_debug",
43+
"release_max_level_warn",
44+
] }
45+
4046
# Dependencies for WASM only.
4147
[target.'cfg(target_arch = "wasm32")'.dependencies]
4248
web-sys = { version = "0.3", features = ["console", "Window", "Storage"] }
@@ -51,6 +57,14 @@ match_same_arms = "warn"
5157
semicolon_if_nothing_returned = "warn"
5258
map_flatten = "warn"
5359

60+
[profile.dist]
61+
inherits = "release"
62+
lto = "thin"
63+
64+
[profile.web-dist]
65+
inherits = "dist"
66+
opt-level = "s"
67+
5468
# Enable only a small amount of optimization in debug mode
5569
[profile.dev]
5670
opt-level = 1

Makefile.toml

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,42 @@
11
[env]
2-
ENV_DIR = {source="${CARGO_MAKE_PROFILE}", default_value = "debug", mapping = {release = "release"}}
3-
CARGO_TARGET_DIR = {value = "target", condition = {env_not_set = ["CARGO_TARGET_DIR"]}}
2+
ENV_DIR = { source = "${CARGO_MAKE_PROFILE}", default_value = "debug", mapping = { release = "release" } }
3+
CARGO_TARGET_DIR = { value = "target", condition = { env_not_set = [
4+
"CARGO_TARGET_DIR",
5+
] } }
46
CARGO_WASM_PATH = "${CARGO_TARGET_DIR}/wasm32-unknown-unknown/${ENV_DIR}/${CARGO_MAKE_CRATE_NAME}.wasm"
57
CARGO_MANIFEST_DIR = "${CARGO_MAKE_WORKING_DIRECTORY}"
6-
PORT=4000
8+
PORT = 4000
79

810
[env.release]
911
CARGO_RELEASE_ARGS = "--release"
1012

13+
[env.web-dist]
14+
CARGO_RELEASE_ARGS = "--profile web-dist"
15+
1116
[tasks.show-env]
1217
command = "env"
1318

1419
[tasks.build]
15-
args = ["build", "--target", "wasm32-unknown-unknown", "@@split(CARGO_RELEASE_ARGS, )"]
20+
args = [
21+
"build",
22+
"--target",
23+
"wasm32-unknown-unknown",
24+
"@@split(CARGO_RELEASE_ARGS, )",
25+
]
1626
command = "cargo"
1727

1828
[tasks.bindgen]
19-
install_crate = {crate_name = "wasm-bindgen-cli", binary = "wasm-bindgen", test_arg="--help"}
20-
args = ["--out-dir", "wasm", "--out-name", "bevy_game", "--target", "web", "--no-typescript", "${CARGO_WASM_PATH}"]
29+
install_crate = { crate_name = "wasm-bindgen-cli", binary = "wasm-bindgen", test_arg = "--help" }
30+
args = [
31+
"--out-dir",
32+
"wasm",
33+
"--out-name",
34+
"bevy_game",
35+
"--target",
36+
"web",
37+
"--no-typescript",
38+
"${CARGO_WASM_PATH}",
39+
]
2140
command = "wasm-bindgen"
2241
dependencies = ["build"]
2342

@@ -28,7 +47,7 @@ cp -r assets wasm/
2847
dependencies = ["bindgen"]
2948

3049
[tasks.serve]
31-
install_crate = {crate_name = "microserver", binary = "microserver", test_arg="--help"}
50+
install_crate = { crate_name = "microserver", binary = "microserver", test_arg = "--help" }
3251
command = "microserver"
3352
args = ["--port", "${PORT}", "--no-spa", "wasm/"]
3453
dependencies = ["static"]

0 commit comments

Comments
 (0)