Contributing
walkerOS is an open-source project. There are multiple ways to contribute, and we appreciate them all. If you have any questions, feel free to reach out:
Development workflow
The main language is TypeScript, but others are welcome as well. We use a test-driven development approach and write tests using Jest. Since the docs are also part of the repository, they can directly be updated as well. Pushing code to the repository will trigger a test-pipeline that runs all tests and checks the code style.
Visual Studio Code (vscode)
When using Visual Studio Code, there is a
devcontainer
setup available. It will automatically install all tools, dependencies and
extensions. To use it, make sure to install the
Remote - Containers
extension. Then, open the command palette and select
Remote-Containers: Reopen in Container
.
Packages
walkerOS is separated into multiple packages and developed in a monorepo. The
latest version is under the develop
branch, while main
contains the latest
stable and released versions. The whole project can be tested and build using
TurboRepo. Run all commands from the root
directory.
# Make sure to install all dependencies first
npm i
# To start a local development server
turbo run dev
# To run all tests
turbo run test
# To build the whole project
turbo run build
# To develop or build a specific package use --filter option
turbo run dev --filter=*walker.js
turbo run build --filter=*walker.js --filter=*utils
The filter
option can be used to only run one or multiple packages. To filter
use the packages name
field in the package.json
file.
Updates
To update all npm packages to the latest version, run:
npx npm-check-updates -u && npm update && npm install
Documentation
The documentation is also included in the repository under the website/docs
folder. It is built using Docusaurus. To start a local
server with live reload make sure to run npm i
first, go to the website/
directory and call:
npm run start
How to release
How to update a package, create a changeset, and publish a (pre-)release.
Making Changes and Creating a Changeset
-
Implement Changes: Make the necessary updates or additions to your packages.
-
Create a Changeset: From the root of your monorepo, run:
$ npx changeset
Select the packages that should be updated and describe the changes.
Preparing for (Pre-)Release
- (Optional) Enter pre-release process:
$ npx changeset pre enter next
- Bump Version for (Pre-)Release: Now, run:
$ npx changeset version
Publishing the Pre-Release
-
Login to npm: Ensure you're logged into npm with
npm login
or set the token withexport NPM_TOKEN="insert_npm_token_here"
. -
To publish with the current tag (
latest
by default ornext
for a pre-release): From the root of the monorepo, run:
$ npm run publish-packages
(Optional) Exiting Pre-Release Mode
After a pre-release is done and it's ready to be released as a stable version:
- Exit Pre-Release Mode: Run:
$ npx changeset pre exit
- Follow the release process again: Create a new changeset for the stable release, version, and then publish normally.