mirror of
https://github.com/danbulant/oxc
synced 2026-05-24 12:21:58 +00:00
130 lines
3.7 KiB
Markdown
130 lines
3.7 KiB
Markdown
# Installation
|
|
|
|
## Clone Repo
|
|
|
|
```bash
|
|
git clone --recurse-submodules git@github.com:oxc-project/oxc.git
|
|
```
|
|
|
|
The `--recurse-submodules` flag will install the following submodules:
|
|
- [babel](https://github.com/babel/babel) registered for path `tasks/coverage/babel`
|
|
- [test262](https://github.com/tc39/test262) registered for path `tasks/coverage/test262`
|
|
- [typescript](https://github.com/microsoft/TypeScript) registered for path `tasks/coverage/typescript`
|
|
|
|
## New to Rust
|
|
|
|
### Install Rust
|
|
```bash
|
|
# https://rustup.rs/
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
|
```
|
|
|
|
```bash
|
|
# move to the cloned repository
|
|
cd oxc
|
|
```
|
|
|
|
```bash
|
|
# rust toolchain
|
|
rustup show
|
|
```
|
|
|
|
`rustup show` reads the `./rust-toolchain.toml` file and installs the correct Rust toolchain and components for this project.
|
|
|
|
### Cargo Tools
|
|
|
|
Some additional Cargo tools are required for developing this project, they can be installed via [`cargo binstall`](https://github.com/cargo-bins/cargo-binstall). `cargo binstall` provides a low-complexity mechanism for installing rust binaries as an alternative to building from source via the slower `cargo install`.
|
|
|
|
You can download the [pre-compiled binary](https://github.com/cargo-bins/cargo-binstall#installation) and save it in `~/.cargo/bin` or install it by running `cargo install cargo-binstall`
|
|
|
|
|
|
## Required tools
|
|
|
|
```bash
|
|
cargo binstall just -y
|
|
```
|
|
|
|
[`just`](https://github.com/casey/just) is a handy way to save and run project-specific commands.
|
|
To initialize all the required tools, run
|
|
|
|
```
|
|
just init
|
|
```
|
|
|
|
## Commands
|
|
|
|
Run `just` for the list of available commands.
|
|
|
|
Run `just r` (alias for `just ready`) to make sure the whole project builds and runs correctly.
|
|
|
|
Take a look at `just new-rule` if you need to start porting a new ESLint rule.
|
|
Make sure the rule is registered in `crates/oxc_linter/src/rules.rs`.
|
|
|
|
# Vscode
|
|
|
|
## Development
|
|
|
|
Build the extension and run it inside vscode:
|
|
|
|
1. `pnpm install`
|
|
2. `pnpm run build`
|
|
3. `pnpm run package`
|
|
4. open vscode and run the command palette "Extensions: Install from VSIX..."
|
|
5. find the `oxc-vscode-x.x.x.vsix` file from `./editors/vscode` directory
|
|
6. open a `.js` / `.ts` file, add `debugger;` and save
|
|
7. see the warning `eslint(no-debugger): debugger statement is not allowed - oxc`
|
|
|
|
# Performance Tuning
|
|
|
|
## Mac Xcode Instruments
|
|
|
|
Mac Xcode instruments can be used to produce a CPU profile.
|
|
|
|
To install Xcode Instruments, install the Command Line Tools:
|
|
|
|
```bash
|
|
xcode-select --install
|
|
```
|
|
|
|
For normal Rust builds, [`cargo instruments`](https://github.com/cmyr/cargo-instruments) can be used as the glue
|
|
for profiling and creating the trace file.
|
|
|
|
First, change the profile for showing debug symbols.
|
|
|
|
```toml
|
|
[profile.release]
|
|
debug = 1 # debug info with line tables only
|
|
strip = false # do not strip symbols
|
|
```
|
|
|
|
Then build the project
|
|
|
|
```bash
|
|
cargo build --release -p oxc_cli --bin oxlint
|
|
```
|
|
|
|
The binary is located at `./target/release/oxlint` once the project is built.
|
|
|
|
Under the hood, `cargo instruments` invokes the `xcrun` command, equivalent to
|
|
|
|
```bash
|
|
xcrun xctrace record --template 'Time Profile' --output . --launch -- /path/to/oxc/target/release/oxlint --quiet
|
|
```
|
|
|
|
Running the command above produces the following output
|
|
|
|
```
|
|
Starting recording with the Time Profiler template. Launching process: oxlint.
|
|
Ctrl-C to stop the recording
|
|
Target app exited, ending recording...
|
|
Recording completed. Saving output file...
|
|
Output file saved as: Launch_oxlint_2023-09-03_4.41.45 PM_EB179B85.trace
|
|
```
|
|
|
|
Open the trace file `open Launch_oxlint_2023-09-03_4.41.45\ PM_EB179B85.trace`.
|
|
|
|
To see a top down trace:
|
|
|
|
1. On the top panel, click CPUs
|
|
2. On the left input box, click `x` then select `Time Profiler`
|
|
3. At the bottom panel, click "Call Tree", turn on "Invert Call Tree" and turn off separate by thread.
|