Crates.io | rsw |
lib.rs | rsw |
version | 0.8.0 |
source | src |
created_at | 2022-01-11 16:54:01.543775 |
updated_at | 2022-11-16 12:30:47.506559 |
description | wasm-pack based build tool |
homepage | https://github.com/lencx/rsw-rs |
repository | https://github.com/lencx/rsw-rs |
max_upload_size | |
id | 512331 |
size | 110,195 |
rsw = rs(rust) → w(wasm)
- A command-line tool for automatically rebuilding local changes, based on the wasm-pack
implementation.
Englist | 简体中文
# Rust - install globally
cargo install rsw
# help
rsw -h
# rsw.toml - initial configuration
rsw init
# generate a wasm project
rsw new <name>
# dev mode
rsw watch
# release mode
rsw build
# clean - link & build
rsw clean
# @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>
Defines files/paths to be ignored. Similar to .gitignore
.
Example:
# .watchignore
*.js
a/b/**/*.txt
!a/b/**/main.txt
configuration file
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 mode rsw watch
, time interval for file changes to trigger wasm-pack build
, default 50
millisecondscli
- npm
| yarn
| pnpm
, default is npm
. Execute link
using the specified cli
, e.g. npm link
[new]
- Quickly generate a crate with wasm-pack new
, or set a custom template in rsw.toml -> [new] -> using
using
- wasm-pack
| rsw
| user
, default is wasm-pack
wasm-pack
- rsw new <name> --template <template> --mode <normal|noinstall|force>
wasm-pack new docrsw
- rsw new <name>
, built-in templatesuser
- rsw new <name>
, if dir
is not configured, use wasm-pack new <name>
to initialize the project.dir
- Copy all files in this directory. This field needs to be configured when using = "user"
. using = "wasm-pack"
or using = "rsw"
, this field will be ignored[[crates]]
- Is an array that supports multiple rust crate
configurations
name
- npm package name, supporting organization, e.g. @rsw/foo
root
- Relative to the project root path, default is .
link
- true
| false
,default is false
, Whether to execute the link
command after this rust crate
is builttarget
- bundler
| nodejs
| web
| no-modules
, default is web
scope
- npm organizationout-dir
- npm package output path, default pkg
[crates.watch]
- Development mode
run
- Whether this crate
needs to be watching, default is true
profile
- dev
| profiling
, default is dev
[crates.build]
- Production mode
run
- Whether this crate
needs to be build, default is true
profile
- release
| profiling
, default is release
Note: name
in [[crates]]
is required, other fields are optional.
rsw watch
- temp dir
watch
mode
[RSW::OK]
[RSW::ERR]
[RSW::NAME]
[RSW::PATH]
[RSW::BUILD]
wasm-pack build
error# rsw.toml
name = "rsw"
version = "0.1.0"
#! time interval for file changes to trigger wasm-pack build, default `50` milliseconds
interval = 50
#! link
#! npm link @see https://docs.npmjs.com/cli/v8/commands/npm-link
#! yarn link @see https://classic.yarnpkg.com/en/docs/cli/link
#! pnpm link @see https://pnpm.io/cli/link
#! The link command will only be executed if `[[crates]] link = true`
#! cli: `npm` | `yarn` | `pnpm`, default is `npm`
cli = "npm"
#! ---------------------------
#! 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]]
#! npm package name (path: $ROOT/rsw-hello)
name = "rsw-hello"
#! run `npm link`: `true` | `false`, default is `false`
link = false
#! 📦 -------- package: @rsw/utils --------
[[crates]]
#! npm package name (path: $ROOT/utils)
name = "utils"
# #! scope: npm org
scope = "rsw"
#! run `npm link`: `true` | `false`, default is `false`
link = false
#! 📦 -------- package: @rsw/hello --------
[[crates]]
#! npm package name (path: $ROOT/@rsw/hello)
name = "@rsw/hello"
#! default is `.`
root = "."
#! default is `pkg`
out-dir = "pkg"
#! target: bundler | nodejs | web | no-modules, default is `web`
target = "web"
#! run `npm link`: `true` | `false`, default is `false`
link = false
#! rsw watch
[crates.watch]
#! default is `true`
run = true
#! profile: `dev` | `profiling`, default is `dev`
profile = "dev"
#! rsw build
[crates.build]
#! default is `true`
run = true
#! profile: `release` | `profiling`, default is `release`
profile = "release"
MIT License © 2022 lencx