Helper scripts used by examples and local dev (not CI-only). Run from node-webrtc-rust repo root unless noted.
Frees a TCP port before an example server binds (avoids EADDRINUSE after a crashed or background npm run start).
| Item | Detail |
|---|---|
| Default usage | PORT=3004 bash scripts/free-port.sh [label] |
| With port arg | bash scripts/free-port.sh 3004 my-label |
| Chained start | bash scripts/free-port.sh 3004 label -- tsx src/index.ts |
| Skip | VOICE_SKIP_FREE_PORT=1 |
| Implementation | lsof -ti :PORT -sTCP:LISTEN (Unix), netstat + kill (Windows) |
npm prestart: voice-agent-local-sherpa-multi-client runs this automatically before start, start:cap-2, and start:debug (port 3004 or PORT).
In-process backup: several examples also call examples/shared/free-port.ts at startup. Shell + TS both respect VOICE_SKIP_FREE_PORT=1.
# Multi-client example (prestart runs automatically):
npm run start --workspace=@node-webrtc-rust/example-voice-agent-local-sherpa-multi-client
# Manual, from repo root:
PORT=3004 bash scripts/free-port.sh voice-agent-local-sherpa-multi-clientExports SHERPA_STT_MODEL_PATH, SHERPA_TTS_MODEL_PATH, and SHERPA_STT_LANGUAGE for local Sherpa examples. Used as a prefix on npm run start* in voice-agent-local-sherpa and voice-agent-local-sherpa-multi-client.
source scripts/export-sherpa-local-models.sh
bash scripts/export-sherpa-local-models.sh -- tsx path/to/server.tsSee examples/voice-agent-local-sherpa/README.md.
Publishing and version bumps: RELEASE.md (full guide).
| Script | Purpose |
|---|---|
ci/bump-workspace-versions.sh |
Bump all @node-webrtc-rust/* versions in git |
ci/post-release-sync-main-package-lock.sh |
After npm publish — align main lockfile from registry |
ci/refresh-package-lock-optional-bindings.sh |
Regenerate optional platform binding lock entries |
ci/validate-package-lock-optional-bindings.sh |
Detect stub lock entries (npm run ci:validate:package-lock) |
Release prep: SKIP_LOCK_REFRESH=1 bash scripts/ci/bump-workspace-versions.sh X.Y.Z. After tag publish, merge the automated chore/post-release-package-lock-X.Y.Z PR (see RELEASE.md).
See scripts/ci/README.md.