mirror of
https://github.com/toeverything/AFFiNE.git
synced 2024-12-18 16:41:56 +03:00
110 lines
2.6 KiB
Markdown
110 lines
2.6 KiB
Markdown
# Building AFFiNE Web
|
|
|
|
> **Warning**:
|
|
>
|
|
> This document has not been updated for a while.
|
|
> If you find any outdated information, please feel free to open an issue or submit a PR.
|
|
|
|
> **Note**
|
|
> For developing & building desktop client app, please refer to [building-desktop-client-app.md](./building-desktop-client-app.md)
|
|
|
|
## Table of Contents
|
|
|
|
- [Prerequisites](#prerequisites)
|
|
- [Setup Environment](#setup-environment)
|
|
- [Start Development Server](#start-development-server)
|
|
- [Testing](#testing)
|
|
|
|
## Prerequisites
|
|
|
|
AFFiNE client has both **Node.js** & **Rust** toolchains.
|
|
|
|
### Install Node.js
|
|
|
|
We suggest develop our product under node.js LTS(Long-term support) version
|
|
|
|
#### Option 1: Manually install node.js
|
|
|
|
install [Node LTS version](https://nodejs.org/en/download)
|
|
|
|
> Up to now, the major node.js version is 18.x
|
|
|
|
#### Option 2: Use node version manager
|
|
|
|
install [fnm](https://github.com/Schniz/fnm)
|
|
|
|
```sh
|
|
fnm use
|
|
```
|
|
|
|
### Install Rust Tools
|
|
|
|
Please follow the official guide at https://www.rust-lang.org/tools/install.
|
|
|
|
### Setup Node.js Environment
|
|
|
|
This setup requires modern yarn (currently `3.x`), run this if your yarn version is `1.x`
|
|
|
|
Reference: [Yarn installation doc](https://yarnpkg.com/getting-started/install)
|
|
|
|
```sh
|
|
corepack enable
|
|
corepack prepare yarn@stable --activate
|
|
```
|
|
|
|
```sh
|
|
# install dependencies
|
|
yarn install
|
|
```
|
|
|
|
### Build Native Dependencies
|
|
|
|
Run the following script. It will build the native module at [`/packages/native`](/packages/native) and build Node.js binding using [NAPI.rs](https://napi.rs/).
|
|
This could take a while if you build it for the first time.
|
|
Note: use `strip` from system instead of `binutils` if you are running MacOS. [see problem here](https://github.com/toeverything/AFFiNE/discussions/2840)
|
|
|
|
```
|
|
yarn workspace @affine/native build
|
|
```
|
|
|
|
### Build Infra
|
|
|
|
```sh
|
|
yarn run build:infra
|
|
```
|
|
|
|
### Build Plugins
|
|
|
|
```sh
|
|
yarn run build:plugins
|
|
```
|
|
|
|
### Build Server Dependencies
|
|
|
|
```sh
|
|
yarn workspace @affine/storage build
|
|
```
|
|
|
|
## Testing
|
|
|
|
Adding test cases is strongly encouraged when you contribute new features and bug fixes.
|
|
|
|
We use [Playwright](https://playwright.dev/) for E2E test, and [vitest](https://vitest.dev/) for unit test.
|
|
To test locally, please make sure browser binaries are already installed via `npx playwright install`.
|
|
Also make sure you have built the `@affine/core` workspace before running E2E tests.
|
|
|
|
### Unit Test
|
|
|
|
```sh
|
|
yarn test
|
|
```
|
|
|
|
### E2E Test
|
|
|
|
```shell
|
|
# there are `affine-local`, `affine-legacy/*`, `affine-local`, `affine-plugin`, `affine-prototype` e2e tests,
|
|
# which are run under different situations.
|
|
cd tests/affine-local
|
|
yarn e2e
|
|
```
|