Declarative reactivity for JavaScript & TypeScript.
rs-x binds plain JavaScript expressions to a data model and propagates updates automatically — synchronous, asynchronous (promises, observables), and mixed data all work transparently without a compilation step.
Website & docs: rsxjs.com
| Package | Description |
|---|---|
rs-x-core |
Shared core utilities |
rs-x-state-manager |
Reactive state management with fine-grained change detection |
rs-x-expression-parser |
JavaScript expression parser → observable expression tree |
rs-x-angular |
Angular pipe integration (rsx pipe) |
rs-x-react |
React hooks integration |
rs-x-react-components |
React UI components |
rs-x-expression-editor |
Expression editor component |
rs-x-dev-tools |
Developer tools |
rs-x-site |
Documentation website (Next.js) |
- Install NodeJs
- Install GIT
- Install pnpm
npm install -g pnpm - execute
pnpm -r install - When using Visual Studio Code, install extensions. For example, the Jest extension is very useful for executing and debugging tests.
pnpm build:core: builds rs-x-core projectpnpm build:state-manager: builds rs-x-state-manager projectpnpm build:expression-parser: builds rs-x-expression-parser projectpnpm build:libs: builds all library projectspnpm build:angular: builds the rs-x-angular projectpnpm build:react: builds rs-x-react projectpnpm build:devtools: builds rs-x-dev-tools projectpnpm build:expression-editor: builds rs-x-expression-editor projectpnpm test: run all testspnpm lint: run ESLint without auto-fixingpnpm lint:fix: run ESLint and auto-fix errors
This document explains step by step how to publish a new release for this repository. No prior knowledge of the release pipeline is required. If you follow these steps in order, your packages will be versioned and published correctly.
This project uses:
- pnpm as the package manager
- Changesets for versioning and changelog management
- GitHub Actions to automate building and publishing
- npm as the package registry
Releases are published only from release/* branches and are fully automated once the branch is pushed.
- Make changes on a feature branch
- Add a Changeset describing the change
- Merge changes into
main - Create a
release/*branch - Push the release branch
- GitHub Actions:
- Validates changes
- Applies version bumps
- Builds packages
- Publishes to npm
Before starting, make sure you have:
- Node.js (LTS)
- Git
npm install
Create a feature or fix branch and implement your changes.
git checkout -b feature/my-change
# make code changes
After completing your code changes, create a Changeset:
pnpm changeset
You will be prompted to:
- Select the affected packages
- Choose the version bump type (
patch,minor, ormajor) - Write a short description of the change
This generates a markdown file in:
.changeset/
Important: Every release must include at least one Changeset file. Without a Changeset, no versions will be published.
Commit your changes and merge them into the main branch.
git commit -am "Add feature X"
git push origin feature/my-change
Then open a Pull Request and merge it into main.
Create a release branch from main.
git checkout main
git pull origin main
git checkout -b release/v1.2.0
git push origin release/v1.2.0
The branch name must start with:
release/
This naming convention is required to trigger the publish pipeline.
Pushing a release/* branch automatically triggers the Publish Packages workflow.
The pipeline executes the following steps in order.
- Checks out the release branch
- Disables default credentials to prevent accidental pushes
Installs the latest Node.js LTS version.
Installs pnpm v9, required by the repository.
pnpm install
Dependencies are installed using the lockfile.
The pipeline compares the release branch against main.
Only the following files may differ:
.changeset/**package.jsonpnpm-lock.yaml
If any other file is changed, the pipeline fails immediately.
This guarantees that release branches contain only versioning-related changes.
pnpm changeset version
This step:
- Reads all Changeset files
- Updates package versions
- Updates changelogs
If version changes are generated:
- They are committed automatically
- The commit is pushed back to the same
release/*branch
If no changes are needed, the step exits safely.
pnpm -r run build
All packages are built recursively.
If any build fails, the release is aborted.
pnpm changeset publish
This step:
- Publishes only packages with new versions
- Skips versions that already exist on npm
- Uses the
NPM_TOKENsecret for authentication
Once this step succeeds, the release is live on npm.
The workflow can also be triggered manually:
- Go to GitHub → Actions
- Select Publish Packages
- Click Run workflow
This is useful for recovery or re-running a failed pipeline.
| Secret Name | Description |
|---|---|
NPM_TOKEN |
Token used to publish packages to npm |
PIPELINE_PAT |
Personal Access Token used to push commits back to the release branch |
You modified files other than:
.changeset/**package.jsonpnpm-lock.yaml
Move all code changes back to main.
Possible causes:
- No Changeset files
- Versions already published
- Build step failed
Check:
NPM_TOKENpermissions- npm package ownership
- Registry availability
To publish a new release:
- Create a Changeset
- Merge it into
main - Create and push a
release/*branch - Let GitHub Actions handle the rest
Once the workflow completes successfully, your packages are published 🎉