oxc/Cargo.toml
2024-01-04 20:41:31 +08:00

159 lines
7.3 KiB
TOML

[workspace]
resolver = "2"
members = ["crates/*", "tasks/*", "napi/*"]
[workspace.package]
authors = ["Boshen <boshenc@gmail.com>", "Oxc contributors"]
categories = ["development-tools", "web-programming", "compilers"]
description = "Oxc is a JavaScript / TypeScript tooling suite."
edition = "2021"
homepage = "https://oxc-project.github.io"
keywords = ["JavaScript", "TypeScript", "parser", "linter", "minifier"]
license = "MIT"
repository = "https://github.com/oxc-project/oxc"
rust-version = "1.60"
[workspace.lints.rust]
[workspace.lints.clippy]
all = { level = "warn" }
# restriction
dbg_macro = "warn"
todo = "warn"
unimplemented = "warn"
# I like the explicitness of this rule as it removes confusion around `clone`.
# This increases readability, avoids `clone` mindlessly and heap allocating on accident.
clone_on_ref_ptr = "warn"
# These two are mutually exclusive, I like `mod.rs` files for better fuzzy searches on module entries.
self_named_module_files = "warn" # "-Wclippy::mod_module_files"
empty_drop = "warn"
empty_structs_with_brackets = "warn"
exit = "warn"
filetype_is_file = "warn"
get_unwrap = "warn"
impl_trait_in_params = "warn"
rc_buffer = "warn"
rc_mutex = "warn"
rest_pat_in_fully_bound_structs = "warn"
unnecessary_safety_comment = "warn"
undocumented_unsafe_blocks = "warn"
# I want to write the best Rust code so both pedantic and nursery is enabled.
# We should only disable rules globally if they are either false positives, chaotic, or does not make sense.
nursery = { level = "warn", priority = -1 }
pedantic = { level = "warn", priority = -1 }
# Allowed rules
# pedantic
# This rule is too pedantic, I don't want to force this because naming things are hard.
module_name_repetitions = "allow"
# All triggers are mostly ignored in our codebase, so this is ignored globally.
struct_excessive_bools = "allow"
too_many_lines = "allow"
# #[must_use] is creating too much noise for this codebase, it does not add much value except nagging
# the programmer to add a #[must_use] after clippy has been run.
# Having #[must_use] every where also hinders readability.
must_use_candidate = "allow"
# used_underscore_binding= "allow"
doc_markdown = "allow"
# nursery
# `const` functions do not make sense for our project because this is not a `const` library.
# This rule also confuses new comers and forces them to add `const` blindlessly without any reason.
missing_const_for_fn = "allow"
[workspace.dependencies]
# publish = true
oxc = { version = "0.4.0", path = "crates/oxc" }
oxc_allocator = { version = "0.4.0", path = "crates/oxc_allocator" }
oxc_ast = { version = "0.4.0", path = "crates/oxc_ast" }
oxc_codegen = { version = "0.4.0", path = "crates/oxc_codegen" }
oxc_diagnostics = { version = "0.4.0", path = "crates/oxc_diagnostics" }
oxc_formatter = { version = "0.4.0", path = "crates/oxc_formatter" }
oxc_index = { version = "0.4.0", path = "crates/oxc_index" }
oxc_minifier = { version = "0.4.0", path = "crates/oxc_minifier" }
oxc_parser = { version = "0.4.0", path = "crates/oxc_parser" }
oxc_semantic = { version = "0.4.0", path = "crates/oxc_semantic" }
oxc_span = { version = "0.4.0", path = "crates/oxc_span" }
oxc_syntax = { version = "0.4.0", path = "crates/oxc_syntax" }
oxc_transformer = { version = "0.4.0", path = "crates/oxc_transformer" }
# publish = false
oxc_macros = { path = "crates/oxc_macros" }
oxc_linter = { path = "crates/oxc_linter" }
oxc_type_synthesis = { path = "crates/oxc_type_synthesis" }
oxc_query = { path = "crates/oxc_query" }
oxc_linter_plugin = { path = "crates/oxc_linter_plugin" }
oxc_prettier = { path = "crates/oxc_prettier" }
oxc_tasks_common = { path = "tasks/common" }
oxc_language_server = { path = "crates/oxc_language_server" }
bpaf = { version = "0.9.8" }
bitflags = { version = "2.4.1" }
bumpalo = { version = "3.14.0" }
compact_str = { version = "0.7.1" }
convert_case = { version = "0.6.0" }
criterion = { version = "0.5.1", default-features = false }
crossbeam-channel = { version = "0.5.10" }
dashmap = { version = "5.5.3" }
env_logger = { version = "0.10.1", default-features = false, features = ["auto-color", "humantime"] }
flate2 = { version = "1.0.28" }
futures = { version = "0.3.30" }
ignore = { version = "0.4.21" }
itertools = { version = "0.12.0" }
jemallocator = { version = "0.5.4" }
lazy_static = { version = "1.4.0" }
miette = { version = "5.10.0", features = ["fancy-no-backtrace"] }
mimalloc = { version = "0.1.39" }
num-bigint = { version = "0.4.4" }
num-traits = { version = "0.2.17" }
phf = { version = "0.11" }
pico-args = { version = "0.5.0" }
proc-macro2 = { version = "1.0.75" }
project-root = { version = "0.2.2" }
quote = { version = "1.0.35" }
rayon = { version = "1.8.0" }
regex = { version = "1.10.2" }
rustc-hash = { version = "1.1.0", default-features = false, features = ["std"] }
ryu-js = { version = "1.0.0" }
ropey = { version = "1.6.1" }
serde = { version = "1.0.194" }
serde_json = { version = "1.0.111" }
syn = { version = "=1" }
thiserror = { version = "1.0.56" }
tokio = { version = "1" }
tower-lsp = { version = "0.20.0", features = ["proposed"] }
unicode-id-start = { version = "1.1.2" }
ureq = { version = "2.9.1", default-features = false, features = ["tls"] }
url = { version = "2.5.0" }
walkdir = { version = "2.4.0" }
indexmap = { version = "2.1.0" }
index_vec = { version = "0.1.3" }
static_assertions = { version = "1.1.0" }
stacker = { version = "0.1.15" }
tracing = { version = "0.1" }
tracing-subscriber = { version = "0.3" }
trustfall = { version = "0.6.1" }
insta = { version = "1.34.0", features = ["glob"] }
codspeed-criterion-compat = { version = "2.3.3", default-features = false }
glob = { version = "0.3.1" }
mime_guess = { version = "2.0.4" }
language-tags = { version = "0.3.2" }
[profile.release.package.oxc_wasm]
opt-level = 'z'
[profile.release]
# Configurations explicitly listed here for clarity.
# Using the best options for performance.
opt-level = 3
lto = "fat"
codegen-units = 1
strip = "symbols"
debug = false
panic = "abort" # Let it crash and force ourselves to write safe Rust.
# Use the `--profile release-debug` flag to show symbols in release mode.
# e.g. `cargo build --profile release-debug`
[profile.release-debug]
inherits = "release"
strip = false
debug = true