Releases: biomejs/biome
CLI v1.8.4-nightly.a579bf7
Analyzer
Enhancements
- Implement css suppression action. Contributed by @togami2864
- Add support of comments in
turbo.json
. Contributed by @Netail
CLI
New features
- Add
--graphql-linter-enabled
option, to control whether the linter should enabled or not for GraphQL files. Contributed by @ematipico
Configuration
- Add support for loading configuration from
.editorconfig
files (#1724). Contributed by @dyc3
Configuration supplied in.editorconfig
will be overridden by the configuration inbiome.json
. Support is disabled by default and can be enabled by adding the following to your formatter configuration inbiome.json
:{ "formatter": { "useEditorconfig": true } }
Editors
Formatter
JavaScript APIs
Linter
Enhancements
-
noInvalidUseBeforeDeclaration now reports direct use of an enum member before its declaration.
In the following code,
A
is reported as use before its declaration.enum E { B = A << 1, A = 1, }
Contributed by @Conaclos
-
useFilenamingConvention now supports unicase letters.
unicase letters have a single case: they are neither uppercase nor lowercase.
Biome now accepts filenames in unicase.
For example, the filename안녕하세요
is now accepted.We still reject a name that mixes unicase characters with lowercase or uppercase characters.
For example, the filenameA안녕하세요
is rejected.This change also fixes #3353.
Filenames consisting only of numbers are now accepted.Contributed by @Conaclos
New features
- Add support for GraphQL linting. Contributed by @ematipico
Bug fixes
- Don't request alt text for elements hidden from assistive technologies (#3316). Contributed by @robintown
- Fix [#3149] crashes that occurred when applying the
noUselessFragments
unsafe fixes in certain scenarios. Contributed by @unvalley noExcessiveNestedTestSuites
: Fix another edge case where the rule would alert on heavily nested zod schemas. Contributed by @dyc3
New rules
-
Add nursery/noDynamicNamespaceImportAccess. Contributed by @minht11
-
noUndeclaredVariables n longer report a direct reference to an enum member (#2974).
In the following code, the
A
reference is no longer reported as an undeclared variable.enum E { A = 1, B = A << 1, }
Contributed by @Conaclos
Parser
Bug fixes
- Fix #3287 nested selectors with pseudo-classes. Contributed by @denbezrukov
- Fix #3349 allow CSS multiple ampersand support. Contributed by @denbezrukov
.class {
&& {
color: red;
}
}
What's Changed
Other changes
- feat(graphql_formatter): bootstrap GraphQL formatter by @denbezrukov in #3255
- fix(graphql_parser): parse object value in list by @vohoanglong0107 in #3315
- feat(graphql_formatter): implement BracketSpacing option by @denbezrukov in #3310
- feat(graphql_formatter): format interfaces with comments by @denbezrukov in #3322
- chore: fix typo in diagnostic comment by @polyomino24 in #3321
- feat(graphql_formatter): format StringValue #3319 by @denbezrukov in #3320
- fix(deps): update rust crates by @renovate in #3328
- chore(deps): update rust crate serde_json to 1.0.119 by @renovate in #3327
- chore(deps): update @biomejs packages by @renovate in #3326
- fix(deps): update dependency prettier to v3.3.2 by @renovate in #3329
- chore(deps): update dependency dprint to v0.47.0 by @renovate in #3267
- chore(deps): update pnpm to v9 by @renovate in #3331
- feat(analyzer): expose a method to retrieve a service on demand by @ematipico in #3286
- feat(editorconfig): reenable editorconfig support, add cli flag to disable it by @dyc3 in #3246
- fix(bench): better tracking for graphql benches by @ematipico in #3159
- chore: translate README.md to Hindi by @harshrathod50 in #3332
- chore(deps): update github-actions by @renovate in #3269
- chore: revert some change in the READMEs by @ematipico in #3335
- docs(governance): fix Discord link by @Conaclos in #3336
- feat(analyzer): update internal infra to account different rules by @ematipico in #3275
- test(editorconfig): additional tests for editorconfig support by @dyc3 in #3219
- chore(deps): update rust crate proc-macro2 to 1.0.86 by @renovate in #3268
- chore(graphql_formatter): performance tests by @denbezrukov in #3323
- feat: support eslint config .eslintrc on migrate by @ArvinQi in #3342
- refactor(js_semantic): use u32 for scope id by @Conaclos in #3358
- feat(graphql_analyze): noDuplicatedFields by @vohoanglong0107 in #3308
- chore(deps): update rust crate serde_json to 1.0.120 by @renovate in #3376
- chore(deps): update rust crate serde to 1.0.204 - autoclosed by @renovate in #3375
- chore(deps): update github-actions by @renovate in #3374
- fix(deps): update rust crates by @renovate in #3377
- chore(deps): update @biomejs packages by @renovate in #3371
- chore(deps): update dependency dprint to v0.47.1 by @renovate in #3372
- ci: update GraphQL cli snapshot by @Conaclos in #3381
- ci(repository_dispatch): fix action by @Conaclos in #3384
- refactor(js_semantic): use trimmed range to identify scopes and bindings by @Conaclos in #3385
- refactor(codegen): call kind src function instead by @dyc3 in #3382
- refactor(js_semantic): separate binding and scope nodes by @Conaclos in #3387
- refactor(js_semantic): remove dead code by @Conaclos in #3388
- ci: update macos image by @ematipico in #3390
New Contributors
- @polyomino24 made their first contribution in #3321
- @drdaemos made their first contribution in #3274
- @harshrathod50 made their first contribution in #3332
- @robintown made their first contribution in #3324
- @ArvinQi made their first contribution in #3342
Full Changelog: cli/v1.8.3...cli/v1.8.4-nightly.a579bf7
CLI v1.8.3
CLI
Bug fixes
-
Fix #3104 by suppressing node warnings when using
biome migrate
. Contributed by @SuperchupuDev -
Force colors to be off when using the GitHub reporter to properly create annotations in GitHub actions (#3148). Contributed by @Sec-ant
Parser
Bug fixes
- Implement CSS unicode range. Contributed by @denbezrukov
Formatter
Bug fixes
- Fix #3184 CSS formatter converts custom identifiers to lowercase. Contributed by @denbezrukov
- Fix #3256 constant crashes when editing css files #3256. Contributed by @denbezrukov
Linter
New features
- Add
nursery/useDeprecatedReason
rule. Contributed by @vohoanglong0107. - Add nursery/noExportedImports. Contributed by @Conaclos
Bug fixes
useConsistentArrayType
anduseShorthandArrayType
now ignoreArray
in theextends
andimplements
clauses. Fix #3247. Contributed by @Conaclos- Fixes #3066 by taking into account the dependencies declared in the
package.json
. Contributed by @ematipico - The code action of the
useArrowFunction
rule now preserves a trailing comma when there is only a single type parameter in the arrow function and JSX is enabled. Fixes #3292. Contributed by @Sec-ant
Enhancements
-
Enhance tailwind sorting lint rule #1274 with variant support.
Every preconfigured variant is assigned a
weight
that concurs on establishing the output sorting order.
Since nesting variants on the same utility class is possible, the resultingweight
is the Bitwise XOR of all the variants weight for that class.
Dynamic variants (e.g.has-[.custom-class]
,group-[:checked]
) are also supported and they take theweight
of their base variant name the custom value attached (e.g.has-[.custom-class]
takeshas
weight).
Arbitrary variants (e.g.[&nth-child(2)]
) don't have a weight assigned and they are placed after every known variant.
Classes with the same amount of arbitrary variants follow lexicographical order. The class that has the highest number of nested arbitrary variants is placed last.
Screen variants (e.g.sm:
,max-md:
,min-lg:
) are not supported yet.Contributed by @lutaok
What's Changed
Other changes
- feat(workspace): adds GraphQL parsing capabilities via feature by @ematipico in #3238
- feat(editorconfig): expand unknown globs into known globs by @dyc3 in #3218
- chore(core): implement
pull_diagnostics
for graphql by @ematipico in #3248 - chore(linter): add a rule source of
noUnknownProperty
by @togami2864 in #3252 - feat: tailwind variant sorting by @lutaok in #3208
- test(parse/json): add test for bug where overrides erroneously override special parsing options by @dyc3 in #3260
- docs(analyzer): improve contributing guide for rules with multiple signals by @minht11 in #3245
- chore(lint): initialise
biome_graphql_analyze
by @ematipico in #3276 - chore(deps): update @biomejs packages by @renovate in #3266
- docs(useNamingConvention): add examples and improve explanations by @Conaclos in #3277
- refactor(parse/json): change fields in
JsonParserSettings
toOption
by @dyc3 in #3272 - feat(search-output-formatter): initialize search output formatter by @BackupMiles in #3258
- chore(grit): implement node-like compilers + fixes by @arendjr in #3253
- feat: enable linting for graphql by @ematipico in #3295
- refactor(parse/css): change fields in
CssParserSettings
toOption
by @dyc3 in #3273 - refactor: add variables to format strings directly by @hamirmahal in #3299
- chore: update codegen to include GraphQL by @ematipico in #3301
New Contributors
- @BackupMiles made their first contribution in #3258
- @hamirmahal made their first contribution in #3299
Full Changelog: cli/v1.8.2...cli/v1.8.3
CLI v1.8.2
CLI
Bug fixes
- Fix #3201 by correctly injecting the source code of the file when printing the diagnostics. Contributed by @ematipico
- Fix #3179 where comma separators are not correctly removed after running
biome migrate
and thus choke the parser. Contributed by @Sec-ant - Fix #3232 by correctly using the colors set by the user. Contributed by @ematipico
Enhancement
-
Reword the reporter message
No fixes needed
toNo fixes applied
.The former message is misleading when there're still errors or warnings in the files that should be taken care of manually. For example:
Checked 2 files in <TIME>. No fixes needed. Found 2 errors.
The new message suits better in these cases.
Contributed by @Sec-ant
Configuration
Bug fixes
-
Don't conceal previous overrides (#3176).
Previously, each override inherited the unset configuration of the base configuration.
This means that setting a configuration in an override can be concealed by a subsequent override that inherits of the value from the base configuration.For example, in the next example,
noDebugger
was disabled for theindex.js
file.{ "linter": { "rules": { "suspicious": { "noDebugger": "off" } } }, "overrides": [ { "include": ["index.js"], "linter": { "rules": { "suspicious": { "noDebugger": "warn" } } } }, { "include": ["index.js"], "linter": { "rules": { "suspicious": { "noDoubleEquals": "off" } } } } ] }
The rule is now correctly enabled for the
index.js
file.Contributed by @Conaclos
Formatter
Bug fixes
- Fix #3103 by correctly resolving CSS formatter options. Contributed by @ah-yu
- Fix #3192 don't add an extra whitespace within :has. Contributed by @denbezrukov
JavaScript APIs
Bug fixes
- Fix a regression introduced by the release of
v1.8.0
Linter
New features
- Add nursery/useValidAutocomplete. Contributed by @unvalley
Bug fixes
-
Add nursery/noShorthandPropertyOverrides. #2958 Contributed by @neokidev
-
Fix [#3084] false positive by correctly recognize parenthesized return statement. Contributed by @unvalley
-
useImportExtensions now suggests a correct fix for
import '.'
andimport './.'
. Contributed by @minht11 -
Fix useDateNow false positive when new Date object has arguments
new Date(0).getTime()
. Contributed by @minht11. -
The
noUnmatchableAnbSelector
rule is now able to catch unmatchablean+b
selectors like0n+0
or-0n+0
. Contributed by @Sec-ant. -
The
useHookAtTopLevel
rule now recognizes properties named as hooks likefoo.useFoo()
. Contributed by @ksnyder9801 -
Fix #3092, prevent warning for
Custom properties (--*)
. Contributed by @chansuke -
Fix a false positive in the
useLiteralKeys
rule. (#3160)This rule now ignores the following kind of computed member name:
const a = { [`line1 line2`]: true, };
Contributed by @Sec-ant
-
The noUnknownProperty rule now ignores the
composes
property often used in css modules. #3000 Contributed by @chansuke -
Fix false positives of the useExhaustiveDependencies rule.
The component itself is considered stable when it is used recursively inside a hook closure defined inside of it:
import { useMemo } from "react"; function MyRecursiveComponent() { // MyRecursiveComponent is stable, we don't need to add it to the dependencies list. const children = useMemo(() => <MyRecursiveComponent />, []); return <div>{children}</div>; }
Also,
export default function
andexport default class
are considered stable now because they can only appear at the top level of a module.Contributed by @Sec-ant
-
Fix missing
withDefaults
macro in vue files for globals variables. Contributed by @Shyam-Chen
Parser
Bug fixes
- Fix CSS modules settings mapping. Contributed by @denbezrukov
What's Changed
Other changes
- chore(ci): improve rules_check task by @Sec-ant in #3165
- chore: change
js
code blocks containing JSX elements tojsx
by @Sec-ant in #3168 - feat(biome_js_analyzer):
noSubstr
by @chansuke in #3125 - chore(deps): update rust crate tokio to 1.38.0 by @renovate in #3146
- chore(grit): implement Grit snippet bindings by @arendjr in #3162
- chore(deps): update @biomejs packages by @renovate in #3145
- feat(analyzer):
useSortedKeys
for JSON objects by @ematipico in #2412 - docs(useImportType): add docs about TypeScript settings by @Conaclos in #3171
- docs(noUndeclaredDependencies,useImportExtensions): add note about LSP configs by @Conaclos in #3173
- docs(no_undeclared_dependencies): follow up fix of #3173 by @Sec-ant in #3175
- chore(ci): try enable
--compact
flag forpkg.pr.new
by @Sec-ant in #3180 - chore(ci): remove
--compact
flag by @Sec-ant in #3181 - fix(formatter): escape double quotes when printing formatter IR by @dyc3 in #3036
- fix: remove unnecessary example by @lanker in #3185
- chore: move maintainers to past maintainers by @ematipico in #3189
- chore: removes old files by @ematipico in #3188
- chore: move Sec-ant to core contributor by @Sec-ant in #3190
- chore: add minht11 to the maintainers team by @minht11 in #3191
- chore: add
chansuke
to maintainers list by @chansuke in #3206 - chore: rust 1.79.0 by @ematipico in #3222
- chore(deps): update github-actions by @renovate in #3225
- chore(deps): update @biomejs packages by @renovate in #3224
- chore(grit): improve snippet compiler by @arendjr in #3223
- refactor(analyzer): use
enumflags2
by @ematipico in #3230 - feat(biome_css_analyzer): implement function-linear-gradient-no-nonstandard-direction by @mdm317 in #2911
- chore(deps): update dependency eslint to v9.5.0 by @renovate in #3227
- fix(deps): update rust crates by @renovate in #3226
New Contributors
- @ksnyder9801 made their first contribution in #3140
- @lanker made their first contribution in #3185
- @aldahick made their first contribution in #3239
Full Changelog: cli/v1.8.1...cli/v1.8.2
CLI v1.8.1
CLI
Bug fixes
- Fix #3069, prevent overwriting paths when using
--staged
or--changed
options. Contributed by @unvalley - Fix a case where the file link inside a diagnostic wasn't correctly displayed inside a terminal run by VSCode. Contributed by @uncenter
Configuration
Bug fixes
- Fix #3067, by assigning the correct default value to
indentWidth
. Contributed by @ematipico
Formatter
Bug fixes
- Fix the bug where whitespace after the & character in CSS nesting was incorrectly trimmed, ensuring proper targeting of child classes #3061. Contributed by @denbezrukov
- Fix #3068 where the CSS formatter was inadvertently converting variable declarations and function calls to lowercase. Contributed by @denbezrukov
- Fix the formatting of CSS grid layout properties. Contributed by @denbezrukov
Linter
Bug fixes
-
The
noEmptyBlock
css lint rule now treats empty blocks containing comments as valid ones. Contributed by @Sec-ant -
useLiteralKeys no longer reports quoted member names (#3085).
Previously useLiteralKeys reported quoted member names that can be unquoted.
For example, the rule suggested the following fix:- const x = { "prop": 0 }; + const x = { prop: 0 };
This conflicted with the option quoteProperties of our formatter.
The rule now ignores quoted member names.
Contributed by @Conaclos
-
noEmptyInterface now ignores empty interfaces in ambient modules (#3110). Contributed by @Conaclos
-
noUnusedVariables and noUnusedFunctionParameters no longer report the parameters of a constructor type (#3135).
Previously,
arg
was reported as unused in a constructor type like:export type Classlike = new (arg: unknown) => string;
Contributed by @Conaclos
-
noStringCaseMismatch now ignores escape sequences (#3134).
The following code is no longer reported by the rule:
s.toUpperCase() === "\u001b";
Contributed by @Conaclos
Parser
New features
- Implemented CSS Unknown At-Rule parsing, allowing the parser to gracefully handle unsupported or unrecognized CSS at-rules. Contributed by @denbezrukov
Bug fixes
- Fix #3055 CSS: Layout using named grid lines is now correctly parsed. Contributed by @denbezrukov
- Fix #3091. Allows the parser to handle nested style rules and at-rules properly, enhancing the parser's compatibility with the CSS Nesting Module. Contributed by @denbezrukov
Other changes
- fix(docs): incorrect snippets by @ematipico in #3059
- feat(grit): parse Grit literal snippets by @arendjr in #3051
- chore: delete stale snapshots by @siosio34 in #3062
- fix(noUnusedFunctionParameters): fix typo in documentation code example by @printfn in #3065
- feat(graphql_parser): parse enum extension by @vohoanglong0107 in #3044
- docs(useNamingConvention): fix conventions example by @Conaclos in #3070
- docs(readme): fix replace
apply
bywrite
option by @Jayllyz in #3071 - refactor: use --write instead of --apply in CLI advices by @Conaclos in #3083
- fix:
use-adjacent-overload-signature
diagnostic by @chansuke in #3095 - chore: fix JSON schema for biome config file by @Conaclos in #3109
- chore(deps): update dependency dprint to v0.46.1 by @renovate in #3042
- fix(deps): update rust crates by @renovate in #3041
- refactor(lint): add SonarJs and UnusedImports rule sources by @Conaclos in #3128
- fix(graphql_parser): allow backlash in block string by @vohoanglong0107 in #3113
- feat(graphql_parser): parse input object type extension by @vohoanglong0107 in #3112
- feat(biome_css_analyzer): implement selector-pseudo-class-no-unknown by @tunamaguro in #3034
- fix(deps): update rust crate roaring to 0.10.5 by @renovate in #3144
- chore(deps): update rust crate regex to 1.10.5 by @renovate in #3141
- chore(deps): update rust crate enumflags2 to 0.7.10 by @renovate in #3139
- chore(deps): update dependency dprint to v0.46.2 by @renovate in #3138
- chore(deps): update rust docker tag to v1.78.0 by @renovate in #3147
- ci: add check for rules docs by @ematipico in #3150
- ci: add check for rules docs by @ematipico in #3152
- chore: format
package.json
like npm does by @ematipico in #3155 - feat(biome_css_analyzer): noShorthandPropertyOverrides by @neokidev in #2958
- feat(biome_css_analyzer):
useConsistentGridAreas
by @chansuke in #2940
New Contributors
Full Changelog: cli/v1.8.0...cli/v1.8.1
CLI v1.8.0
Analyzer
New features
- Allow suppression comments to suppress individual instances of rules. This is
used for the lint ruleuseExhaustiveDependencies
, which is now able to
suppress specific dependencies. Fixes #2509. Contributed by @arendjr
Enhancements
- Assume
Astro
object is always a global when processing.astro
files. Contributed by @minht11 - Assume Vue compiler macros are globals when processing
.vue
files. (#2771) Contributed by @dyc3
CLI
New features
-
New
clean
command. Use this new command to clean after thebiome-logs
directory, and remove all the log files.biome clean
-
Add two new options
--only
and--skip
to the commandbiome lint
(#58).The
--only
option allows you to run a given rule or rule group,
For example, the following command runs only thestyle/useNamingConvention
andstyle/noInferrableTypes
rules.
If the rule is disabled in the configuration, then its severity level is set toerror
for a recommended rule orwarn
otherwise.biome lint --only=style/useNamingConvention --only=style/noInferrableTypes
Passing a group does not change the severity level of the rules in the group.
All the disabled rules in the group will remain disabled.
To ensure that the group is run, therecommended
field of the group is enabled.
Thenursery
group cannot be passed, as no rules are enabled by default in the nursery group.The
--skip
option allows you to skip the execution of a given group or a given rule.
For example, the following command skips thestyle
group and thesuspicious/noExplicitAny
rule.biome lint --skip=style --skip=suspicious/noExplicitAny
You can also use
--only
and--skip
together.--skip
oevrrides--only
.
The following command executes only the rules from thestyle
group, but thestyle/useNamingConvention
rule.biome lint --only=style --skip=style/useNamingConvention
These options are compatible with other options such as
--write
(previously--apply
), and--reporter
.Contributed by @Conaclos
-
Add new command
biome clean
. Use this command to purge all the logs emitted by the Biome daemon. This command is really useful, because the Biome daemon tends
log many files and contents during its lifecycle. This means that if your editor is open for hours (or even days), thebiome-logs
folder could become quite heavy. Contributed by @ematipico -
Add support for formatting and linting CSS files from the CLI. These operations are opt-in for the time being.
If you don't have a configuration file, you can enable these features with
--css-formatter-enabled
and--css-linter-enabled
:biome check --css-formatter-enabled=true --css-linter-enabled=true ./
Contributed by @ematipico
-
Add new CLI options to control the CSS formatting. Check the CLI reference page for more details. Contributed by @ematipico
-
Add new options
--write
,--fix
(alias of--write
) and--unsafe
to the commandbiome lint
andbiome check
.
Add a new option--fix
(alias of--write
) to the commandbiome format
andbiome migrate
.biome <lint|check> --<write|fix> [--unsafe] biome format --<write|fix> biome migrate --<write|fix>
The
biome <lint|check> --<write|fix>
has the same behavior asbiome <lint|check> --apply
.
Thebiome <lint|check> --<write|fix> --unsafe
has the same behavior asbiome <lint|check> --apply-unsafe
.
Thebiome format --fix
has the same behavior asbiome format --write
.
Thebiome migrate --fix
has the same behavior asbiome migrate --write
.This change allows these commands to write modifications in the same options.
With this change, the--apply
and--apply-unsafe
options are deprecated.Contributed by @unvalley
Enhancements
-
Biome now executes commands (lint, format, check and ci) on the working directory by default. #2266 Contributed by @unvalley
- biome check . + biome check # You can run the command without the path
-
biome migrate eslint
now tries to convert ESLint ignore patterns into Biome ignore patterns.ESLint uses gitignore patterns.
Biome now tries to convert these patterns into Biome ignore patterns.For example, the gitignore pattern
/src
is a relative path to the file in which it appears.
Biome now recognizes this and translates this pattern to./src
.Contributed by @Conaclos
-
biome migrate eslint
now supports theeslintIgnore
field inpackage.json
.ESLint allows the use of
package.json
as an ESLint configuration file.
ESLint supports two fields:eslintConfig
andeslintIgnore
.
Biome only supported the former. It now supports both.Contributed by @Conaclos
-
biome migrate eslint
now propagates NodeJS errors to the user.This will help users to identify why Biome is unable to load some ESLint configurations.
Contributed by @Conaclos
-
Add a new
--reporter
calledsummary
. This reporter will print diagnostics in a different way, based on the tools (formatter, linter, etc.) that are executed.
Import sorting and formatter shows the name of the files that require formatting. Instead, the linter will group the number of rules triggered and the number of errors/warnings:Formatter ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ The following files needs to be formatted: main.ts index.ts Organize Imports ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ The following files needs to have their imports sorted: main.ts index.ts Analyzer ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Some analyzer rules were triggered Rule Name Diagnostics lint/suspicious/noImplicitAnyLet 12 (12 error(s), 0 warning(s), 0 info(s)) lint/suspicious/noDoubleEquals 8 (8 error(s), 0 warning(s), 0 info(s)) lint/suspicious/noRedeclare 12 (12 error(s), 0 warning(s), 0 info(s)) lint/suspicious/noDebugger 20 (20 error(s), 0 warning(s), 0 info(s))
Contributed by @ematipico
-
biome ci
now enforces printing the output using colours. If you were previously using--colors=force
, you can remove it because it's automatically set. Contributed by @ematipico -
Add a new
--reporter
calledgithub
. This reporter will print diagnostics using GitHub workflow commands:::error title=lint/suspicious/noDoubleEquals,file=main.ts,line=4,endLine=4,col=3,endColumn=5::Use === instead of == ::error title=lint/suspicious/noDebugger,file=main.ts,line=6,endLine=6,col=1,endColumn=9::This is an unexpected use of the debugger statement. ::error title=lint/nursery/noEvolvingAny,file=main.ts,line=8,endLine=8,col=5,endColumn=6::This variable's type is not allowed to evolve implicitly, leading to potential any types.
Contributed by @ematipico
-
Add a new
--reporter
calledjunit
. This reporter will print diagnostics using GitHub workflow commands:<?xml version="1.0" encoding="UTF-8"?> <testsuites name="Biome" tests="16" failures="16" errors="20" time="<TIME>"> <testsuite name="main.ts" tests="1" disabled="0" errors="0" failures="1" package="org.biome"> <testcase name="org.biome.lint.suspicious.noDoubleEquals" line="4" column="3"> <failure message="Use === instead of ==. == is only allowed when comparing against `null`">line 3, col 2, Use === instead of ==. == is only allowed when comparing against `null`</failure> </testcase> </testsuite> <testsuite name="main.ts" tests="1" disabled="0" errors="0" failures="1" package="org.biome"> <testcase name="org.biome.lint.suspicious.noDebugger" line="6" column="1"> <failure message="This is an unexpected use of the debugger statement.">line 5, col 0, This is an unexpected use of the debugger statement.</failure> </testcase> </testsuite> <testsuite name="main.ts" tests="1" disabled="0" errors="0" failures="1" package="org.biome"> <testcase name="org.biome.lint.nursery.noEvolvingAny" line="8" column="5"> <failure message="This variable's type is not allowed to evolve implicitly, leading to potential any types.">line 7, col 4, This variable's type is not allowed to evolve implicitly, leading to potential any types.</failure> </testcase> </testsuite> </testsuites>
Contributed by @ematipico
Bug fixes
- Fix #3024, where running
biome init
would createbiome.json
even ifbiome.jsonc
already exists. Contributed by @minht11
Configuration
New features
-
Add an rule option
fix
to override the code fix kind of a rule (#2882).A rule can provide a safe or an unsafe code action.
You can now tune the kind of code actions thanks to thefix
option.
This rule option takes a value among:none
: the rule no longer emits code actions.safe
: the rule emits safe code action.unsafe
: the rule emits unsafe code action.
The following configuration disables the code actions of
noUnusedVariables
, makes the emitted code actions ofstyle/useConst
a...
CLI v1.7.4-nightly.125f34b
Analyzer
Enhancements
CLI
New features
-
Add a new option
--rule
to the commandbiome lint
(#58).This new option allows you to execute a single rule or a rule group.
This option is convenient to test a rule or apply the code fixes of a single rule.For example, you can execute the
style/useNamingConvention
rule on the working directory:biome lint --rule=style/useNamingConvention ./
If the rule has a code action (autofix), you can use
--apply
to apply the fix:biome lint --rule=style/useNamingConvention --apply ./
The option takes the rule options in the Biome configuration file into account.
Only, the severity level of the rule is overridden by its default value,
i.e.error
for a recommended rule orwarn
otherwise.You can also run a group of rules:
biome lint --rule=suspicious src/main.js
In this case, the severity level of a rule is not overridden.
Thus, the disabled rules stay disabled.
To ensure that the group is run, therecommended
field of the group is turned on.
Thenursery
group cannot be passed because no rules are enabled in the nursery group by default.The option is compatible with other options such as
--apply
,--apply-unsafe
and--reporter
.Contributed by @Conaclos
-
Add new command
biome clean
. Use this command to purge all the logs emitted by the Biome daemon. This command is really useful, because the Biome daemon tends
log many files and contents during its lifecycle. This means that if your editor is open for hours (or even days), thebiome-logs
folder could become quite heavy. Contributed by @ematipico -
Add support for formatting and linting CSS files from the CLI. These operations are opt-in for the time being.
If you don't have a configuration file, you can enable these features with
--css-formatter-enabled
and--css-linter-enabled
:biome check --css-formatter-enabled=true --css-linter-enabled=true ./
Contributed by @ematipico
-
Add new CLI options to control the CSS formatting. Check the CLI reference page for more details. Contributed by @ematipico
-
Add new options
--write
,--fix
(alias of--write
) and--unsafe
to the commandbiome lint
andbiome check
.
Add a new option--fix
(alias of--write
) to the commandbiome format
andbiome migrate
.biome <lint|check> --<write|fix> [--unsafe] biome format --<write|fix> biome migrate --<write|fix>
The
biome <lint|check> --<write|fix>
has the same behavior asbiome <lint|check> --apply
.
Thebiome <lint|check> --<write|fix> --unsafe
has the same behavior asbiome <lint|check> --apply-unsafe
.
Thebiome format --fix
has the same behavior asbiome format --write
.
Thebiome migrate --fix
has the same behavior asbiome migrate --write
.This change allows these commands to write modifications in the same options.
With this change, the--apply
and--apply-unsafe
options are deprecated.Contributed by @unvalley
Enhancements
-
Biome now executes commands (lint, format, check and ci) on the working directory by default. #2266 Contributed by @unvalley
- biome check . + biome check # You can run the command without the path
-
biome migrate eslint
now tries to convert ESLint ignore patterns into Biome ignore patterns.ESLint uses gitignore patterns.
Biome now tries to convert these patterns into Biome ignore patterns.For example, the gitignore pattern
/src
is a relative path to the file in which it appears.
Biome now recognizes this and translates this pattern to./src
.Contributed by @Conaclos
-
biome migrate eslint
now supports theeslintIgnore
field inpackage.json
.ESLint allows the use of
package.json
as an ESLint configuration file.
ESLint supports two fields:eslintConfig
andeslintIgnore
.
Biome only supported the former. It now supports both.Contributed by @Conaclos
-
biome migrate eslint
now propagates NodeJS errors to the user.This will help users to identify why Biome is unable to load some ESLint configurations.
Contributed by @Conaclos
-
Add a new
--reporter
calledsummary
. This reporter will print diagnostics in a different way, based on the tools (formatter, linter, etc.) that are executed.
Import sorting and formatter shows the name of the files that require formatting. Instead, the linter will group the number of rules triggered and the number of errors/warnings:Formatter ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ The following files needs to be formatted: main.ts index.ts Organize Imports ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ The following files needs to have their imports sorted: main.ts index.ts Analyzer ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Some analyzer rules were triggered Rule Name Diagnostics lint/suspicious/noImplicitAnyLet 12 (12 error(s), 0 warning(s), 0 info(s)) lint/suspicious/noDoubleEquals 8 (8 error(s), 0 warning(s), 0 info(s)) lint/suspicious/noRedeclare 12 (12 error(s), 0 warning(s), 0 info(s)) lint/suspicious/noDebugger 20 (20 error(s), 0 warning(s), 0 info(s))
Contributed by @ematipico
-
biome ci
now enforces printing the output using colours. If you were previously using--colors=force
, you can remove it because it's automatically set. Contributed by @ematipico
Configuration
New features
-
Add an rule option
fix
to override the code fix kind of a rule (#2882).A rule can provide a safe or an unsafe code action.
You can now tune the kind of code actions thanks to thefix
option.
This rule option takes a value among:none
: the rule no longer emits code actions.safe
: the rule emits safe code action.unsafe
: the rule emits unsafe code action.
The following configuration disables the code actions of
noUnusedVariables
, makes the emitted code actions ofstyle/useConst
andstyle/useTemplate
unsafe and safe respectively.{ "linter": { "rules": { "correctness": { "noUnusedVariables": { "level": "error", "fix": "none" }, "style": { "useConst": { "level": "warn", "fix": "unsafe" }, "useTemplate": { "level": "warn", "fix": "safe" } } } } } }
Contributed by @Conaclos
-
Add option
javascript.linter.enabled
to control the linter for JavaScript (and its super languages) files. Contributed by @ematipico -
Add option
json.linter.enabled
to control the linter for JSON (and its super languages) files. Contributed by @ematipico -
Add option
css.linter.enabled
to control the linter for CSS (and its super languages) files. Contributed by @ematipico -
Add option
css.formatter
, to control the formatter options for CSS (and its super languages) files. Contributed by @ematipico
Enhancements
- The
javascript.formatter.trailingComma
option is deprecated and renamed tojavascript.formatter.trailingCommas
. The corresponding CLI option--trailing-comma
is also deprecated and renamed to--trailing-commas
. Details can be checked in #2492. Contributed by @Sec-ant
Editors
New features
- Add support for LSP Workspaces
Bug fixes
- Fixes #2781, by correctly computing the configuration to apply to a specific file. Contributed by @ematipico
Formatter
Bug fixes
- Fix #2470 by avoid introducing linebreaks in single line string interpolations. Contributed by @ah-yu
- Resolve deadlocks by narrowing the scope of locks. Contributed by @mechairoi
- Fix #2782 by computing the enabled rules by taking the override settings into consideration. Contributed by @ematipico
JavaScript APIs
Linter
New features
-
Add nursery/useThrowOnlyError. Contributed by @minht11
-
Add nursery/useImportExtensions. Contributed by @minht11
-
useNamingConvention now supports an option to enforce custom conventions (#1900).
For example, you can enforce the use of a prefix for private class members:
{ "linter": { "rules": { "style": { "useNamingConvention": { "level": "error", "options": { "conventions": [ { "selector": { "kind": "classMember", "modifiers": ["private"] }, "match": "_(.*)", "formats": ["camelCase"] } ] } } } } } }
Please, find more details in the rule documentation.
Contributed by @Conaclos
-
Add [nursery/useNumberToFixedDigitsArgument](https://biomejs.dev/linter/rules/use-number-to-fixed-...
JavaScript APIs v0.6.0-nightly.af70ac2
Analyzer
Enhancements
CLI
New features
-
Add a new option
--rule
to the commandbiome lint
(#58).This new option allows you to execute a single rule or a rule group.
This option is convenient to test a rule or apply the code fixes of a single rule.For example, you can execute the
style/useNamingConvention
rule on the working directory:biome lint --rule=style/useNamingConvention ./
If the rule has a code action (autofix), you can use
--apply
to apply the fix:biome lint --rule=style/useNamingConvention --apply ./
The option takes the rule options in the Biome configuration file into account.
Only, the severity level of the rule is overridden by its default value,
i.e.error
for a recommended rule orwarn
otherwise.You can also run a group of rules:
biome lint --rule=suspicious src/main.js
In this case, the severity level of a rule is not overridden.
Thus, the disabled rules stay disabled.
To ensure that the group is run, therecommended
field of the group is turned on.
Thenursery
group cannot be passed because no rules are enabled in the nursery group by default.The option is compatible with other options such as
--apply
,--apply-unsafe
and--reporter
.Contributed by @Conaclos
-
Add new command
biome clean
. Use this command to purge all the logs emitted by the Biome daemon. This command is really useful, because the Biome daemon tends
log many files and contents during its lifecycle. This means that if your editor is open for hours (or even days), thebiome-logs
folder could become quite heavy. Contributed by @ematipico -
Add support for formatting and linting CSS files from the CLI. These operations are opt-in for the time being.
If you don't have a configuration file, you can enable these features with
--css-formatter-enabled
and--css-linter-enabled
:biome check --css-formatter-enabled=true --css-linter-enabled=true ./
Contributed by @ematipico
-
Add new CLI options to control the CSS formatting. Check the CLI reference page for more details. Contributed by @ematipico
-
Add new options
--write
,--fix
(alias of--write
) and--unsafe
to the commandbiome lint
andbiome check
.
Add a new option--fix
(alias of--write
) to the commandbiome format
andbiome migrate
.biome <lint|check> --<write|fix> [--unsafe] biome format --<write|fix> biome migrate --<write|fix>
The
biome <lint|check> --<write|fix>
has the same behavior asbiome <lint|check> --apply
.
Thebiome <lint|check> --<write|fix> --unsafe
has the same behavior asbiome <lint|check> --apply-unsafe
.
Thebiome format --fix
has the same behavior asbiome format --write
.
Thebiome migrate --fix
has the same behavior asbiome migrate --write
.This change allows these commands to write modifications in the same options.
With this change, the--apply
and--apply-unsafe
options are deprecated.Contributed by @unvalley
Enhancements
-
Biome now executes commands (lint, format, check and ci) on the working directory by default. #2266 Contributed by @unvalley
- biome check . + biome check # You can run the command without the path
-
biome migrate eslint
now tries to convert ESLint ignore patterns into Biome ignore patterns.ESLint uses gitignore patterns.
Biome now tries to convert these patterns into Biome ignore patterns.For example, the gitignore pattern
/src
is a relative path to the file in which it appears.
Biome now recognizes this and translates this pattern to./src
.Contributed by @Conaclos
-
biome migrate eslint
now supports theeslintIgnore
field inpackage.json
.ESLint allows the use of
package.json
as an ESLint configuration file.
ESLint supports two fields:eslintConfig
andeslintIgnore
.
Biome only supported the former. It now supports both.Contributed by @Conaclos
-
biome migrate eslint
now propagates NodeJS errors to the user.This will help users to identify why Biome is unable to load some ESLint configurations.
Contributed by @Conaclos
-
Add a new
--reporter
calledsummary
. This reporter will print diagnostics in a different way, based on the tools (formatter, linter, etc.) that are executed.
Import sorting and formatter shows the name of the files that require formatting. Instead, the linter will group the number of rules triggered and the number of errors/warnings:Formatter ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ The following files needs to be formatted: main.ts index.ts Organize Imports ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ The following files needs to have their imports sorted: main.ts index.ts Analyzer ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Some analyzer rules were triggered Rule Name Diagnostics lint/suspicious/noImplicitAnyLet 12 (12 error(s), 0 warning(s), 0 info(s)) lint/suspicious/noDoubleEquals 8 (8 error(s), 0 warning(s), 0 info(s)) lint/suspicious/noRedeclare 12 (12 error(s), 0 warning(s), 0 info(s)) lint/suspicious/noDebugger 20 (20 error(s), 0 warning(s), 0 info(s))
Contributed by @ematipico
-
biome ci
now enforces printing the output using colours. If you were previously using--colors=force
, you can remove it because it's automatically set. Contributed by @ematipico
Configuration
New features
-
Add an rule option
fix
to override the code fix kind of a rule (#2882).A rule can provide a safe or an unsafe code action.
You can now tune the kind of code actions thanks to thefix
option.
This rule option takes a value among:none
: the rule no longer emits code actions.safe
: the rule emits safe code action.unsafe
: the rule emits unsafe code action.
The following configuration disables the code actions of
noUnusedVariables
, makes the emitted code actions ofstyle/useConst
andstyle/useTemplate
unsafe and safe respectively.{ "linter": { "rules": { "correctness": { "noUnusedVariables": { "level": "error", "fix": "none" }, "style": { "useConst": { "level": "warn", "fix": "unsafe" }, "useTemplate": { "level": "warn", "fix": "safe" } } } } } }
Contributed by @Conaclos
-
Add option
javascript.linter.enabled
to control the linter for JavaScript (and its super languages) files. Contributed by @ematipico -
Add option
json.linter.enabled
to control the linter for JSON (and its super languages) files. Contributed by @ematipico -
Add option
css.linter.enabled
to control the linter for CSS (and its super languages) files. Contributed by @ematipico -
Add option
css.formatter
, to control the formatter options for CSS (and its super languages) files. Contributed by @ematipico
Enhancements
- The
javascript.formatter.trailingComma
option is deprecated and renamed tojavascript.formatter.trailingCommas
. The corresponding CLI option--trailing-comma
is also deprecated and renamed to--trailing-commas
. Details can be checked in #2492. Contributed by @Sec-ant
Editors
New features
- Add support for LSP Workspaces
Bug fixes
- Fixes #2781, by correctly computing the configuration to apply to a specific file. Contributed by @ematipico
Formatter
Bug fixes
- Fix #2470 by avoid introducing linebreaks in single line string interpolations. Contributed by @ah-yu
- Resolve deadlocks by narrowing the scope of locks. Contributed by @mechairoi
- Fix #2782 by computing the enabled rules by taking the override settings into consideration. Contributed by @ematipico
JavaScript APIs
Linter
New features
-
Add nursery/useThrowOnlyError. Contributed by @minht11
-
Add nursery/useImportExtensions. Contributed by @minht11
-
useNamingConvention now supports an option to enforce custom conventions (#1900).
For example, you can enforce the use of a prefix for private class members:
{ "linter": { "rules": { "style": { "useNamingConvention": { "level": "error", "options": { "conventions": [ { "selector": { "kind": "classMember", "modifiers": ["private"] }, "match": "_(.*)", "formats": ["camelCase"] } ] } } } } } }
Please, find more details in the rule documentation.
Contributed by @Conaclos
-
Add [nursery/useNumberToFixedDigitsArgument](https://biomejs.dev/linter/rules/use-number-to-fixed-...
CLI v1.7.3
CLI
Bug fixes
-
The stdin-file-path option now works correctly for Astro/Svelte/Vue files (#2686)
Fix #2225 where lint output become empty for Vue files.
Contributed by @tasshi-me
-
biome migrate eslint
now correctly resolve@scope/eslint-config
(#2705). Contributed by @Conaclos
Linter
New features
Bug fixes
-
noBlankTarget no longer hangs when applying a code fix (#2675).
Previously, the following code made Biome hangs when applying a code fix.
<a href="https://example.com" rel="" target="_blank"></a>
Contributed by @Conaclos
-
noRedeclare no longer panics on conditional type (#2659).
This is a regression introduced by #2394.
This regression makesnoRedeclare
panics on every conditional types withinfer
bindings.Contributed by @Conaclos
-
noUnusedLabels and noConfusingLabels now ignore svelte reactive statements (#2571).
The rules now ignore reactive Svelte blocks in Svelte components.
<script> $: { /* reactive block */ } </script>
Contributed by @Conaclos
-
useExportType no longer removes leading comments (#2685).
Previously,
useExportType
removed leading comments when it factorized thetype
qualifier.
It now provides a code fix that preserves the leading comments:- export { + export type { /**leading comment*/ - type T + T }
Contributed by @Conaclos
-
useJsxKeyInIterable no longer reports false positive when iterating on non-jsx items (#2590).
The following snipet of code no longer triggers the rule:
<>{data.reduce((total, next) => total + next, 0)}</>
Contributed by @dyc3
-
Fix typo by renaming
useConsistentBuiltinInstatiation
touseConsistentBuiltinInstantiation
Contributed by @minht11
What's Changed
Other changes
- feat(biome_graphql_parser): parse schema definition by @vohoanglong0107 in #2557
- chore(ci): renovate pin GA to semver by @Sec-ant in #2670
- build(deps): update by @Conaclos in #2669
- build(deps): upgrade indexmap crate by @Conaclos in #2673
- feat(biome_css_analyzer): implement noDuplicateAtImportRules by @DerTimonius in #2658
- feat(biome_css_analyzer): noUnknownSelectorPseudoElement by @keita-hino in #2655
- feat(biome_graphql_parser): implement NthAt for GraphqlLexer by @vohoanglong0107 in #2677
- feat(biome_graphql_parser): parse scalar type definition by @vohoanglong0107 in #2663
- chore: add Grit node compilers by @arendjr in #2689
- chore: upgrade to rust 1.78 by @ematipico in #2691
- feat: parse object type definition by @vohoanglong0107 in #2690
- chore(deps): upgrade oxc_resolver by @ematipico in #2694
- chore: implement Grit node bindings by @arendjr in #2697
- docs: better explanation of the directive
"use strict"
by @ematipico in #2699 - docs: add small note about
process.exit
by @ematipico in #2700 - fix(lint/noDuplicateAtImportRules): correctly handle both single- and double quotes by @DerTimonius in #2707
- feat(biome_graphql_parser): parse interface type definition by @vohoanglong0107 in #2703
- feat(linter): implement
NoUnmatchableAnbSelector
by @togami2864 in #2706 - chore(deps): update rust crate tracing to 0.1.40 by @renovate in #2554
- fix(lint/useJsxKeyInIterable): handle ternaries properly by @dyc3 in #2701
- fix(useExplicitLengthCheck): docs by @Sec-ant in #2735
- chore(deps): update rust crate serde to 1.0.200 by @renovate in #2737
- chore(deps): update github-actions by @renovate in #2740
- chore(deps): update dependency prettier to v3.2.5 by @renovate in #2739
- chore(deps): update pnpm to v8.15.8 by @renovate in #2733
- chore(deps): update @biomejs packages by @renovate in #2732
- chore(deps): update dependency eslint to v9.2.0 by @renovate in #2738
New Contributors
- @dyc3 made their first contribution in #2667
- @tasshi-me made their first contribution in #2686
Full Changelog: cli/v1.7.2...cli/v1.7.3
CLI v1.7.2
Analyzer
Bug fixes
-
Import sorting now ignores side effect imports (#817).
A side effect import consists now in its own group.
This ensures that side effect imports are not reordered.Here is an example of how imports are now sorted:
import "z" - import { D } from "d"; import { C } from "c"; + import { D } from "d"; import "y" import "x" - import { B } from "b"; import { A } from "a"; + import { B } from "b"; import "w"
Contributed by @Conaclos
-
Import sorting now adds spaces where needed (#1665)
Contributed by @Conaclos
CLI
Bug fixes
-
biome migrate eslint
now handles cyclic references.Some plugins and configurations export objects with cyclic references.
This causesbiome migrate eslint
to fail or ignore them.
These edge cases are now handled correctly.Contributed by @Conaclos
Formatter
Bug fixes
Linter
New features
-
Add nusery/noReactSpecificProps.
Contributed by @marvin-j97 -
Add noUselessUndefinedInitialization.
Contributed by @lutaok -
Add nusery/useArrayLiterals.
Contributed by @Kazuhiro-Mimaki -
Add nusery/useConsistentBuiltinInstatiation.
Contributed by @minht11 -
Add nusery/useDefaultSwitchClause.
Contributed by @michellocana
Bug fixes
-
noDuplicateJsonKeys no longer crashes when a JSON file contains an unterminated string (#2357).
Contributed by @Conaclos -
noRedeclare now reports redeclarations of parameters in a functions body (#2394).
The rule was unable to detect redeclarations of a parameter or type parameter in the function body.
The following two redeclarations are now reported:function f<T>(a) { type T = number; // redeclaration const a = 0; // redeclaration }
Contributed by @Conaclos
-
noRedeclare no longer reports overloads in object types (#2608).
The rule no longer report redeclarations in the following code:
type Overloads = { ({ a }: { a: number }): number, ({ a }: { a: string }): string, };
Contributed by @Conaclos
-
noRedeclare now merge default function export declarations and types (#2372).
The following code is no longer reported as a redeclaration:
interface Foo {} export default function Foo() {}
Contributed by @Conaclos
-
noUndeclaredVariables no longer reports variable-only and type-only exports (#2637).
Contributed by @Conaclos -
[noUnusedVariables] no longer crash Biome when encountering a malformed conditional type (#1695).
Contributed by @Conaclos -
useConst now ignores a variable that is read before its assignment.
Previously, the rule reported the following example:
let x; x; // read x = 0; // write
It is now correctly ignored.
Contributed by @Conaclos
-
useShorthandFunctionType now suggests correct code fixes when parentheses are required (#2595).
Previously, the rule didn't add parentheses when they were needed.
It now adds parentheses when the function signature is inside an array, a union, or an intersection.- type Union = { (): number } | string; + type Union = (() => number) | string;
Contributed by @Conaclos
-
useTemplate now correctly escapes strings (#2580).
Previously, the rule didn't correctly escape characters preceded by an escaped character.
Contributed by @Conaclos
-
noMisplacedAssertion now allow these matchers
expect.any()
expect.anything()
expect.closeTo
expect.arrayContaining
expect.objectContaining
expect.stringContaining
expect.stringMatching
expect.extend
expect.addEqualityTesters
expect.addSnapshotSerializer
Contributed by @fujiyamaorange
Parser
Bug fixes
-
The language parsers no longer panic on unterminated strings followed by a newline and a space (#2606, #2410).
The following example is now parsed without making Biome panics:
" "
Contributed by @Conaclos
What's Changed
Other changes
- build(xstask): remove deps
fs_extra
andfiletime
by @Conaclos in #2562 - docs: Add more useImportType examples to docs by @drwpow in #2307
- chore: update schema definition by @Mayandev in #2567
- fix(configuration_schema): rename some fields to camelCase in the
configuration_schema.json
by @ah-yu in #2568 - fix: rename some fileds to camelCase in the
configuration_schema
by @ah-yu in #2569 - feat(biome_css_analyzer): noUnknownUnit by @neokidev in #2535
- chore: fix some typos in comments by @hardlydearly in #2579
- refactor: foundations for LSP workspaces support by @ematipico in #2589
- fix(lint/noRedundantAlt): rule source by @Conaclos in #2609
- feat(linter): Implement
useGenericFontNames
by @togami2864 in #2573 - chore: remove some website leftovers by @SuperchupuDev in #2617
- refactor(deserialize): don't handle Option specifically by @Conaclos in #2630
- refactor: use TriviaPiece factory functions in more places by @minht11 in #2632
- feat(biome_css_analyzer): noUnknownFunction by @neokidev in #2570
- fix(snippet): should emit only one diagnostic by @Sec-ant in #2650
- chore: add infrastructure for Grit engine by @arendjr in #2586
- docs: fix typos in biome_rowan batch mutation by @vohoanglong0107 in #2653
- chore: upgrade prettier and update snapshots by @ah-yu in #2502
- build(deps): update by @Conaclos in #2657
New Contributors
- @Mayandev made their first contribution in #2567
- @neokidev made their first contribution in #2535
- @hardlydearly made their first contribution in #2579
- @minht11 made their first contribution in #2540
- @Kazuhiro-Mimaki made their first contribution in #2541
- @michellocana made their first contribution in #2605
- @Shyam-Chen made their first contribution in #2598
Full Changelog: cli/v1.7.1...cli/v1.7.2
CLI v1.7.1
Editors
Bug fixes
- Fix #2403 by printing the errors in the client console. Contributed by @ematipico
Formatter
Bug fixes
-
Add parentheses for the return expression that has leading multiline comments. #2504. Contributed by @ah-yu
-
Correctly format dangling comments of continue statements. #2555. Contributed by @ah-yu
Linter
Bug fixes
- Fix case where
jsxRuntime
wasn't being respected byuseImportType
rule (#2473).Contributed by @arendjr - Fix #2460, where the rule
noUselessFragments
was crashing the linter in some cases. Now cases like these are correctly handled:Contributed by @ematipicocallFunction(<>{bar}</>)
- Fix #2366, where
noDuplicateJsonKeys
incorrectly computed the kes to highlight. Contributed by @ematipico
Enhancements
- The rule
noMisplacedAssertions
now considers valid callingexpect
insidewaitFor
:Contributed by @ematipicoimport { waitFor } from '@testing-library/react'; await waitFor(() => { expect(111).toBe(222); });
What's Changed
Other changes
- fix(lint/noBarrelFile): rule source by @Conaclos in #2464
- refactor(bench): update import statement and module handling in run.js by @chansuke in #2471
- docs: fix missing punctuation and typo by @uncenter in #2477
- fix: missing "--apply" option in the command example by @t-shiratori in #2479
- chore: tidy up dependencies by @ematipico in #2480
- chore(ci): add repository dispatch workflow by @Sec-ant in #2442
- chore: fix some typos in comments by @TechVest in #2486
- feat: start working on yaml support by @defnot001 in #2428
- chore: prepare knope by @ematipico in #2484
- ci: trigger prepare release by @ematipico in #2489
- ci: trigger prepare release by @ematipico in #2490
- chore: remove variables from workflows by @ematipico in #2491
- chore: speed up
wasm-pack
profiling build by @Sec-ant in #2494 - fix: reverts hashbrown, which causes issues when compiling to WASM by @ematipico in #2496
- fix(linter): name of typescript-eslint by @ematipico in #2503
- Handle operation parsing error GraphQL by @vohoanglong0107 in #2434
- chore: remove website from monorepo by @ematipico in #2505
- ci: add a workflow for linting pr titles by @unvalley in #2497
- feat(rule/solidjs): add no-react-specific-props by @marvin-j97 in #2427
- refactor(js_syntax): remove TsNameWithTypeArguments by @Conaclos in #2510
- fix(linter): add missing fix kind for solid rule by @ematipico in #2519
- feat(biome_css_analyzer): noCssEmptyBlock by @togami2864 in #2513
- chore: added how to create new css lint rule by @togami2864 in #2522
- refactor(css_formatter): implement FormatCssBlockLike by @denbezrukov in #2531
- feat(biome_css_analyze): noDuplicateSelectorsKeyframeBlock by @isnakode in #2534
- docs: fixed path to crates, updated link to translating doc by @viraxslot in #2538
- fix(biome_css_analyzer): update lint error messages by @togami2864 in #2545
- feat(biome_css_analyze): noImportantInKeyframe by @isnakode in #2542
- chore(deps): update rust crate serde_json to 1.0.116 by @renovate in #2553
- chore(deps): update rust crate proc-macro2 to 1.0.81 by @renovate in #2551
- chore(deps): update github-actions by @renovate in #2549
- chore: add a new bronze sponsor by @ematipico in #2556
- chore(deps): update rust:1.77.2 docker digest to 6052afe by @renovate in #2550
- chore(deps): update rust crate serde to 1.0.198 by @renovate in #2552
- feat(biome_graphql_parser): parse fragment definition by @vohoanglong0107 in #2506
- refactor(ci): add more valid PR title types by @Conaclos in #2559
- docs: fix typo in biome analyze contribution document by @GunseiKPaseri in #2560
- build(deps): remove 'case' dependency by @Conaclos in #2561
New Contributors
- @uncenter made their first contribution in #2477
- @t-shiratori made their first contribution in #2479
- @TechVest made their first contribution in #2486
- @defnot001 made their first contribution in #2428
- @marvin-j97 made their first contribution in #2427
- @viraxslot made their first contribution in #2538
- @GunseiKPaseri made their first contribution in #2560
Full Changelog: cli/v1.7.0...cli/v1.7.1