Feature
- rsw init
- rsw watch
- rsw build
- rsw new
wasm-pack
rsw
user
- debug info
TODO
- local sub-dependency file changes trigger hot updates
- integrate front-end scaffolding, such as
vite
,webpack
, etc.
Usage
cargo install rsw
# help
rsw -h
# dev
rsw watch
# release
rsw build
Logger
# @see: https://github.com/env-logger-rs/env_logger
# RUST_LOG=rsw=<info|trace|debug|error|warn> rsw <watch|build|new>
# 1. info
RUST_LOG=rsw=info rsw <SUBCOMMAND>
# 2. all: info, trace, debug, error, warn
RUST_LOG=rsw rsw <SUBCOMMAND>
rsw.toml
configuration file
Options
Create rsw.toml
in the project root path, configure the rust crate
parameter, and run the rsw watch
or rsw build
command.
-
name
- Profile name (optional) -
version
- Profile version (optional) -
interval
- Development modersw watch
, time interval for file changes to triggerwasm-pack build
, default50
milliseconds -
[new]
- Quickly generate a crate withwasm-pack new
, or set a custom template inrsw.toml -> [new] -> using
-
using
-wasm-pack
|rsw
|user
, default iswasm-pack
-
wasm-pack
-rsw new <name> --template <template> --mode <normal|noinstall|force>
wasm-pack new doc -
rsw
-rsw new <name>
, built-in templates -
user
-rsw new <name>
, ifdir
is not configured, usewasm-pack new <name>
to initialize the project. -
dir
- Copy all files in this directory. This field needs to be configured whenusing = "user"
.using = "wasm-pack"
orusing = "rsw"
, this field will be ignored
-
-
[[crates]]
- Is an array that supports multiplerust crate
configurations-
name
- npm package name, supporting organization, e.g.@rsw/foo
-
root
- Relative to the project root path, default is.
-
target
-bundler
|nodejs
|web
|no-modules
, default isweb
-
out-dir
- npm package output path, defaultpkg
-
[crates.watch]
- Development mode -
run
- Whether thiscrate
needs to be watching, default istrue
-
profile
-dev
|profiling
, default isdev
-
[crates.build]
- Production mode -
run
- Whether thiscrate
needs to be build, default istrue
-
profile
-release
|profiling
, default isrelease
-
Note: name
in [[crates]]
is required, other fields are optional.
Example
# rsw.toml
name = "rsw"
version = "0.1.0"
#! default is `50` ms
interval = 50
#! ---------------------------
#! rsw new <name>
[new]
#! @see https://rustwasm.github.io/docs/wasm-pack/commands/new.html
#! using: `wasm-pack` | `rsw` | `user`, default is `wasm-pack`
#! 1. wasm-pack: `rsw new <name> --template <template> --mode <normal|noinstall|force>`
#! 2. rsw: `rsw new <name>`, built-in templates
#! 3. user: `rsw new <name>`, if `dir` is not configured, use `wasm-pack new <name>` to initialize the project
using = "wasm-pack"
#! this field needs to be configured when `using = "user"`
#! `using = "wasm-pack"` or `using = "rsw"`, this field will be ignored
#! copy all files in this directory
dir = "my-template"
#! ################# NPM Package #################
#! When there is only `name`, other fields will use the default configuration
#! -------- package: rsw-hello --------
[[crates]]
name = "rsw-hello"
#! =======================================================
#! -------- package: @rsw/hello --------
# [[crates]]
# #! npm package name
# name = "@rsw/hello"
# #! default is `.`
# root = "."
# #! default is `pkg`
# out-dir = "pkg"
# #! target: bundler | nodejs | web | no-modules, default is `web`
# target = "web"
# #! rsw watch
# [crates.watch]
# #! default is `true`
# run = false
# #! profile: `dev` | `profiling`, default is `dev`
# profile = "dev"
# #! rsw build
# [crates.build]
# run = false
# #! profile: `release` | `profiling`, default is `release`
# profile = "release"
Top comments (0)