Development
Development Guidelines
- The project uses tools such as ESLint, Prettier, Stylelint, Clippy, Rustfmt, etc. for code style checking. Please make sure the code is styled correctly before committing it.
- Please do not use
git -n
to skip code style checks. We have added code style checking to CI.
- Please do not use
- Please do not commit useless code, files, or directories.
- If it involves a big feature refactoring, or a new feature, please raise it in an issue first so that it can be discussed.
Environment Requirements
The following dependencies are required regardless of the system used:
- Rust v1.78 or later stable version.
- Be sure to use the MSVC toolchain on Windows.
- Node.js v20 LTS or a newer LTS, Latest version.
- pnpm v9 or later stable version
- git
There are also a few additional dependencies we'll need to ensure the project builds properly:
- cmake - Requirements introduced by the
zip
crate. - llvm - Required by
rquickjs
orrocksdb
. - patch - Requirements introduced by
rquickjs
.
Windows
On Windows, the following recommendations should also be followed:
- Open the project for the first time with administrator privileges, the
patch
command requires administrator privileges to execute. - Install
gsudo
viascoop
,choco
,winget
(of course Windows 11 comes with sudo as well) - for easy terminal lifting.
Preparation
Before development, we need to initialize some environments for the project.
First, we need to install the front-end dependencies:
bash pnpm i
In addition, we need to download the cores, resource files, etc., for the sidecar and resource binary files.
This command supports the use of terminal proxies, if network connectivity is an issue, use a proxy.
pnpm check
If you find a missing file, or want to force an update of the resource file, you can use the following directive:
pnpm check --force
Development
We currently provide two convenience commands to start the development environment. Usually we prefer to use a dedicated development instance.
- Start the dedicated development instance
pnpm dev:diff
- Launch a development instance with behavior similar to that of the distributor
pnpm dev