mirror of
https://github.com/biomejs/biome.git
synced 2025-12-23 08:21:13 +00:00
259 lines
8.2 KiB
Makefile
259 lines
8.2 KiB
Makefile
_default:
|
|
just --list -u
|
|
|
|
alias f := format
|
|
alias t := test
|
|
alias r := ready
|
|
alias l := lint
|
|
alias qt := test-quick
|
|
|
|
# Installs the tools needed to develop
|
|
install-tools:
|
|
cargo install cargo-binstall
|
|
cargo binstall cargo-insta wasm-opt
|
|
cargo binstall wasm-bindgen-cli --version 0.2.105
|
|
pnpm install
|
|
|
|
# Upgrades the tools needed to develop
|
|
upgrade-tools:
|
|
cargo install cargo-binstall --force
|
|
cargo binstall cargo-insta wasm-opt --force
|
|
cargo binstall wasm-bindgen-cli --version 0.2.105 --force
|
|
|
|
# Generate all files across crates and tools. You rarely want to use it locally.
|
|
gen-all:
|
|
cargo run -p xtask_codegen -- all
|
|
just gen-configuration
|
|
just gen-migrate
|
|
just gen-bindings
|
|
just format
|
|
|
|
# Generates TypeScript types and JSON schema of the configuration
|
|
gen-bindings:
|
|
just gen-schema
|
|
just gen-types
|
|
|
|
# Generates TypeScript types
|
|
gen-types:
|
|
cargo run -p xtask_codegen --features schema -- bindings
|
|
|
|
# Generates the JSON Schema of the configuration
|
|
gen-schema:
|
|
cargo codegen-schema
|
|
|
|
# Generates code generated files for the linter
|
|
gen-analyzer:
|
|
just gen-rules
|
|
just gen-configuration
|
|
just gen-migrate
|
|
just gen-bindings
|
|
just lint-rules
|
|
just format
|
|
|
|
# Generate and updates the files needed inside the *_analyze crates
|
|
gen-rules:
|
|
cargo run -p xtask_codegen -- analyzer
|
|
|
|
|
|
gen-configuration:
|
|
cargo run -p xtask_codegen --features configuration -- configuration
|
|
|
|
# Generates code for eslint migration
|
|
gen-migrate:
|
|
cargo run -p xtask_codegen --features configuration -- migrate-eslint
|
|
|
|
# Generates the initial files for all formatter crates
|
|
gen-formatter:
|
|
cargo run -p xtask_codegen -- formatter
|
|
|
|
# Generates the Tailwind CSS preset for utility class sorting
|
|
[working-directory: 'packages/tailwindcss-config-analyzer']
|
|
gen-tw:
|
|
pnpm build
|
|
pnpm execute
|
|
|
|
# Build WASM for bundler target (development)
|
|
build-wasm-bundler-dev:
|
|
cargo build --lib --target wasm32-unknown-unknown -p biome_wasm
|
|
wasm-bindgen target/wasm32-unknown-unknown/debug/biome_wasm.wasm \
|
|
--out-dir packages/@biomejs/wasm-bundler \
|
|
--target bundler \
|
|
--typescript
|
|
|
|
# Build WASM for bundler target (release)
|
|
build-wasm-bundler:
|
|
cargo build --lib --target wasm32-unknown-unknown --release -p biome_wasm
|
|
wasm-bindgen target/wasm32-unknown-unknown/release/biome_wasm.wasm \
|
|
--out-dir packages/@biomejs/wasm-bundler \
|
|
--no-demangle \
|
|
--target bundler \
|
|
--typescript
|
|
wasm-opt packages/@biomejs/wasm-bundler/biome_wasm_bg.wasm \
|
|
-o packages/@biomejs/wasm-bundler/biome_wasm_bg.wasm \
|
|
-Os \
|
|
-g
|
|
|
|
# Build WASM for Node.js target (development)
|
|
build-wasm-node-dev:
|
|
cargo build --lib --target wasm32-unknown-unknown -p biome_wasm
|
|
wasm-bindgen target/wasm32-unknown-unknown/debug/biome_wasm.wasm \
|
|
--out-dir packages/@biomejs/wasm-nodejs \
|
|
--target nodejs \
|
|
--typescript
|
|
|
|
# Build WASM for Node.js target (release)
|
|
build-wasm-node:
|
|
cargo build --lib --target wasm32-unknown-unknown --release -p biome_wasm
|
|
wasm-bindgen target/wasm32-unknown-unknown/release/biome_wasm.wasm \
|
|
--out-dir packages/@biomejs/wasm-nodejs \
|
|
--no-demangle \
|
|
--target nodejs \
|
|
--typescript
|
|
wasm-opt packages/@biomejs/wasm-nodejs/biome_wasm_bg.wasm \
|
|
-o packages/@biomejs/wasm-nodejs/biome_wasm_bg.wasm \
|
|
-Os \
|
|
-g
|
|
|
|
# Build WASM for web target (development)
|
|
build-wasm-web-dev:
|
|
cargo build --lib --target wasm32-unknown-unknown -p biome_wasm
|
|
wasm-bindgen target/wasm32-unknown-unknown/debug/biome_wasm.wasm \
|
|
--out-dir packages/@biomejs/wasm-web \
|
|
--target web \
|
|
--typescript
|
|
|
|
# Build WASM for web target (release)
|
|
build-wasm-web:
|
|
cargo build --lib --target wasm32-unknown-unknown --release -p biome_wasm
|
|
wasm-bindgen target/wasm32-unknown-unknown/release/biome_wasm.wasm \
|
|
--out-dir packages/@biomejs/wasm-web \
|
|
--no-demangle \
|
|
--target web \
|
|
--typescript
|
|
wasm-opt packages/@biomejs/wasm-web/biome_wasm_bg.wasm \
|
|
-o packages/@biomejs/wasm-web/biome_wasm_bg.wasm \
|
|
-Os \
|
|
-g
|
|
|
|
# Generates the code of the grammars available in Biome
|
|
gen-grammar *args='':
|
|
cargo run -p xtask_codegen -- grammar {{args}}
|
|
|
|
# Generates the linter documentation and Rust documentation
|
|
documentation:
|
|
RUSTDOCFLAGS='-D warnings' cargo documentation
|
|
|
|
# Creates a new js lint rule with the given name. Name has to be camel case.
|
|
new-js-lintrule rulename:
|
|
cargo run -p xtask_codegen -- new-lintrule --kind=js --category=lint --name={{rulename}}
|
|
just gen-analyzer
|
|
|
|
# Creates a new js assist rule with the given name. Name has to be camel case.
|
|
new-js-assistrule rulename:
|
|
cargo run -p xtask_codegen -- new-lintrule --kind=js --category=assist --name={{rulename}}
|
|
just gen-analyzer
|
|
|
|
# Creates a new json assist rule with the given name. Name has to be camel case.
|
|
new-json-assistrule rulename:
|
|
cargo run -p xtask_codegen -- new-lintrule --kind=json --category=assist --name={{rulename}}
|
|
just gen-analyzer
|
|
|
|
# Creates a new json lint rule with the given name. Name has to be camel case.
|
|
new-json-lintrule rulename:
|
|
cargo run -p xtask_codegen -- new-lintrule --kind=json --category=lint --name={{rulename}}
|
|
just gen-analyzer
|
|
|
|
# Creates a new css lint rule with the given name. Name has to be camel case.
|
|
new-css-lintrule rulename:
|
|
cargo run -p xtask_codegen -- new-lintrule --kind=css --category=lint --name={{rulename}}
|
|
just gen-analyzer
|
|
|
|
# Creates a new graphql lint rule with the given name. Name has to be camel case.
|
|
new-graphql-lintrule rulename:
|
|
cargo run -p xtask_codegen -- new-lintrule --kind=graphql --category=lint --name={{rulename}}
|
|
just gen-analyzer
|
|
|
|
# Creates a new html lint rule with the given name. Name has to be camel case.
|
|
new-html-lintrule rulename:
|
|
cargo run -p xtask_codegen -- new-lintrule --kind=html --category=lint --name={{rulename}}
|
|
just gen-analyzer
|
|
|
|
# Creates a new html lint rule with the given name, but targets vue. Name has to be camel case.
|
|
new-html-vue-lintrule rulename:
|
|
cargo run -p xtask_codegen -- new-lintrule --kind=html-vue --category=lint --name={{rulename}}
|
|
just gen-analyzer
|
|
|
|
# Promotes a rule from the nursery group to a new group
|
|
move-rule rulename group:
|
|
cargo run -p xtask_codegen -- move-rule --group={{group}} --name={{rulename}}
|
|
cargo run -p xtask_codegen -- analyzer
|
|
|
|
# Format Rust files and TOML files
|
|
format:
|
|
cargo format
|
|
pnpm format
|
|
|
|
[unix]
|
|
_touch file:
|
|
touch {{file}}
|
|
|
|
[windows]
|
|
_touch file:
|
|
powershell -Command "(Get-Item {{file}}).LastWriteTime = Get-Date"
|
|
|
|
# Run tests of all crates
|
|
test:
|
|
cargo test run --no-fail-fast
|
|
|
|
# Run tests for the crate passed as argument e.g. just test-create biome_cli
|
|
test-crate name:
|
|
cargo test run -p {{name}} --no-fail-fast
|
|
|
|
# Run doc tests
|
|
test-doc:
|
|
cargo test --doc
|
|
|
|
# Tests a lint rule. The name of the rule needs to be camel case
|
|
test-lintrule name:
|
|
just _touch crates/biome_js_analyze/tests/spec_tests.rs
|
|
just _touch crates/biome_json_analyze/tests/spec_tests.rs
|
|
just _touch crates/biome_css_analyze/tests/spec_tests.rs
|
|
just _touch crates/biome_graphql_analyze/tests/spec_tests.rs
|
|
just _touch crates/biome_html_analyze/tests/spec_tests.rs
|
|
cargo test -p biome_js_analyze -- {{snakecase(name)}} --show-output
|
|
cargo test -p biome_json_analyze -- {{snakecase(name)}} --show-output
|
|
cargo test -p biome_css_analyze -- {{snakecase(name)}} --show-output
|
|
cargo test -p biome_graphql_analyze -- {{snakecase(name)}} --show-output
|
|
cargo test -p biome_html_analyze -- {{snakecase(name)}} --show-output
|
|
|
|
# Tests a lint rule. The name of the rule needs to be camel case
|
|
test-transformation name:
|
|
just _touch crates/biome_js_transform/tests/spec_tests.rs
|
|
cargo test -p biome_js_transform -- {{snakecase(name)}} --show-output
|
|
|
|
# Run the quick_test for the given package.
|
|
test-quick package:
|
|
cargo test -p {{package}} --test quick_test -- quick_test --nocapture --ignored
|
|
|
|
# Alias for `cargo lint`, it runs clippy on the whole codebase
|
|
lint:
|
|
cargo lint
|
|
|
|
# Checks if the docs of the lint rules follow Biome's requirements
|
|
lint-rules:
|
|
cargo run -p rules_check
|
|
|
|
# When you finished coding, run this command to run the same commands in the CI.
|
|
ready:
|
|
git diff --exit-code --quiet
|
|
just gen-all
|
|
just documentation
|
|
#just format # format is already run in `just gen-all`
|
|
just lint
|
|
just test
|
|
just test-doc
|
|
git diff --exit-code --quiet
|
|
|
|
# Creates a new changeset for the final changelog
|
|
new-changeset:
|
|
pnpm changeset
|