08dc353e82
* First sweep packages + some minor tweaking * Second sweep * Regenerate lockfile + package.json mods * Regenerate lockfile again * Fix CI * Fix CI again * All building properly * unblock * Tweak examples * Comments + readme + fix rotten unit test
63 lines
2.7 KiB
Markdown
63 lines
2.7 KiB
Markdown
# sdk-version-bump
|
|
|
|
Tool to update version numbers across the SDK packages, both Cargo
|
|
(`wasm/smolmix`, `wasm/client`) and TS (`@nymproject/mix-tunnel`,
|
|
`@nymproject/mix-fetch`, `@nymproject/mix-dns`, `@nymproject/mix-websocket`,
|
|
plus the legacy `@nymproject/sdk` family).
|
|
|
|
## Usage
|
|
|
|
This tool is expected to be run by CI; the snippets below are for manual use
|
|
from the repo root.
|
|
|
|
### Full release (Rust + TS in parity)
|
|
|
|
This is the default. Use it when smolmix-wasm has changed and the TS SDK
|
|
must publish a matching version.
|
|
|
|
1. `cargo run -p sdk-version-bump remove-suffix`
|
|
2. Build everything and publish to crates.io / npm.
|
|
3. `cargo run -p sdk-version-bump bump-version` — bumps every package from
|
|
`X.Y.Z` to `X.Y.(Z+1)-rc.0`, and rewrites every `@nymproject/...` dep
|
|
specifier of the form `>=X.Y.Z-rc.W || ^X` accordingly.
|
|
|
|
### TS-only release
|
|
|
|
Use this when the TS SDK needs a bump but smolmix-wasm itself hasn't changed.
|
|
The Cargo crates are left untouched, and downstream package.json files keep
|
|
their existing dep ranges for `@nymproject/smolmix-wasm` and
|
|
`@nymproject/nym-client-wasm` (so they continue to resolve to the last
|
|
published wasm version).
|
|
|
|
1. `cargo run -p sdk-version-bump remove-suffix --ts-only`
|
|
2. Build the TS packages and publish to npm.
|
|
3. `cargo run -p sdk-version-bump bump-version --ts-only`
|
|
|
|
### Pre-release (rc bump)
|
|
|
|
To increment just the `-rc.X` counter (`X.Y.Z-rc.W` → `X.Y.Z-rc.W+1`):
|
|
|
|
```
|
|
cargo run -p sdk-version-bump bump-version --pre-release
|
|
```
|
|
|
|
Combine with `--ts-only` if you're rc-bumping the TS layer alone.
|
|
|
|
## What gets touched
|
|
|
|
| What | Where it's declared | Behaviour under `--ts-only` |
|
|
|---|---|---|
|
|
| `Cargo.toml` `package.version` of each Cargo crate | `register_cargo(...)` | skipped |
|
|
| `package.json` `version` of each TS package | `register_json(...)` | bumped |
|
|
| `@nymproject/...` dep ranges in `dependencies` / `peerDependencies` / `devDependencies` / `optionalDependencies` / `bundledDependencies` | `register_known_js_dependency(...)` | bumped, except cargo-derived ones |
|
|
| Cargo-derived JS dep ranges (`@nymproject/smolmix-wasm`, `@nymproject/nym-client-wasm`) | `register_cargo_derived_js_dependency(...)` | left alone |
|
|
| `workspace:*`, `file:..`, `link:..`, `npm:..` specifiers | n/a (skipped at parse time) | always skipped — pnpm rewrites them at publish |
|
|
|
|
## Adding a new package
|
|
|
|
1. If it's a Cargo crate: `packages.register_cargo("relative/path")`.
|
|
2. If it's a TS package: `packages.register_json("relative/path")`.
|
|
3. If the package is consumed by other packages as a dep, also add its npm
|
|
name to either `register_known_js_dependency` (TS-driven version) or
|
|
`register_cargo_derived_js_dependency` (wasm-pack-driven version).
|