.PHONY: all build build-wasm test test-wasm clean install-wasm-pack
all: build
build:
cargo build --release
build-wasm: install-wasm-pack
wasm-pack build crates/anofox-forecast-js --target web --out-dir ../../js --out-name anofox_forecast_js
@echo "WASM build complete. Output in js/"
build-wasm-node: install-wasm-pack
wasm-pack build crates/anofox-forecast-js --target nodejs --out-dir ../../js-node --out-name anofox_forecast_js
@echo "WASM Node.js build complete. Output in js-node/"
build-wasm-bundler: install-wasm-pack
wasm-pack build crates/anofox-forecast-js --target bundler --out-dir ../../js-bundler --out-name anofox_forecast_js
@echo "WASM bundler build complete. Output in js-bundler/"
test:
cargo test
test-wasm: install-wasm-pack
wasm-pack test --headless --chrome crates/anofox-forecast-js
clean:
cargo clean
rm -rf js/*.wasm js/*.js js/*.d.ts js/package.json.bak
rm -rf js-node js-bundler
install-wasm-pack:
@which wasm-pack > /dev/null || (echo "Installing wasm-pack..." && curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh)
check-wasm:
cargo build -p anofox-forecast-js --target wasm32-unknown-unknown
fmt:
cargo fmt --all
clippy:
cargo clippy --all-targets --all-features -- -D warnings
publish-npm: build-wasm
cd js && npm publish --access public
dev-wasm: install-wasm-pack
wasm-pack build crates/anofox-forecast-js --target web --out-dir ../../js --out-name anofox_forecast_js --dev