Skip to content

rwasm/rsw-rs

main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
May 25, 2022 08:11
npm
October 26, 2022 08:49
src
December 2, 2022 18:49
September 11, 2022 09:45
November 16, 2022 20:30
November 16, 2022 20:30
January 3, 2022 10:45
November 16, 2022 20:49
November 16, 2022 20:30
January 16, 2022 16:31

rsw-rs

rsw = rs(rust) → w(wasm) - A command-line tool for automatically rebuilding local changes, based on the wasm-pack implementation.

Crate Info API Docs

Englist | 简体中文

Pre-installed

Usage

# 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

Awesome rsw

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>

.watchignore

Defines files/paths to be ignored. Similar to .gitignore.

Example:

# .watchignore
*.js
a/b/**/*.txt
!a/b/**/main.txt

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 mode rsw watch, time interval for file changes to trigger wasm-pack build, default 50 milliseconds
  • cli - 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 doc
      • rsw - rsw new <name>, built-in templates
      • user - 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 built
    • target - bundler | nodejs | web | no-modules, default is web
    • scope - npm organization
    • out-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

rsw watch - temp dir

  • rsw.info - information about the watch mode
    • [RSW::OK]
    • [RSW::ERR]
    • [RSW::NAME]
    • [RSW::PATH]
    • [RSW::BUILD]
  • rsw.err - wasm-pack build error
  • rsw.crates

Example

# 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"

License

MIT License © 2022 lencx