Biome 설정
이 가이드는 Biome를 어떻게 설정하는지 이해하는 데 도움을 줍니다.
설정 파일의 구조와 Biome가 설정을 어떻게 해결하는지 설명합니다.
기존에 설정에 익숙하다면, 사용 가능한 모든 옵션을 상세히 다루는 설정 참조를 확인해 보세요.
Biome는 명령줄 인터페이스(클라이언트) 옵션 또는 biome.json 또는 biome.jsonc라는 이름의 설정 파일을 통해 동작을 사용자 정의할 수 있습니다.
각 프로젝트마다 설정 파일을 생성하는 것을 권장합니다.
이는 팀 구성원 모두가 클라이언트 및 비메가 통합을 지원하는 편집기에서 동일한 설정을 사용하게 보장합니다.
설정 파일에 있는 많은 옵션은 명령줄에서도 사용할 수 있습니다.
설정 파일 구조
섹션 제목: “설정 파일 구조”Biome 설정 파일은 biome.json 또는 biome.jsonc라고 불립니다.
보통 프로젝트의 루트 디렉터리에 위치하며, 프로젝트의 package.json과 함께 존재합니다.
비메가는 도구 체인(툴체인)이므로, 설정은 제공하는 도구 중심으로 조직됩니다.
현재 비메가는 세 가지 도구를 제공합니다: 포맷터, 라이너, 그리고 임포트 정렬기(또는 임포트 정리기).
이 모든 도구는 기본적으로 활성화되어 있습니다.
필요 시 <도구>.enabled 필드를 사용하여 하나 이상의 도구를 비활성화할 수 있습니다:
{ "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", "formatter": { "enabled": false }, "linter": { "enabled": false }, "organizeImports": { "enabled": false }}여러 언어에 공통되는 옵션은 해당 도구 필드 내에 배치됩니다.
도구의 특정 언어 옵션은 <언어>.<도구> 필드에 배치됩니다.
이는 특정 언어에 대한 일반 옵션을 재정의할 수도 있음을 의미합니다.
또한 언어 기반으로 도구를 활성화하거나 비활성화할 수도 있습니다.
다음 예제에서는 모든 언어에 대해 일반적인 formatter.indentStyle 및 formatter.lineWidth 옵션을 설정합니다.
또한 자바스크립트 전용 옵션인 quoteStyle를 javascript.formatter에 설정하고, formatter.lineWidth를 재정의합니다.
마지막으로, .json 파일에는 포맷터를 비활성화합니다.
{ formatter: { indentStyle: "space", // 기본값은 `tab` lineWidth: 100, // 기본값은 `80` }, javascript: { formatter: { quoteStyle: "single", // 기본값은 `double` lineWidth: 120, // `formatter.lineWidth` 재정의 }, }, json: { formatter: { enabled: false, }, },}설정 파일 해결 방식
섹션 제목: “설정 파일 해결 방식”Biome는 자동 탐색을 통해 가장 가까운 설정 파일을 찾습니다.
작업 디렉터리와 상위 디렉터리를 순차적으로 검색하여 biome.json 또는 biome.jsonc 파일을 찾습니다.
설정 파일이 발견되지 않으면, Biome의 기본값이 적용됩니다.
biome.json과 biome.jsonc가 같은 폴더에 동시에 존재하는 경우, biome.json이 우선순위가 높습니다.
아래는 예시입니다:
- app - backend - biome.json - package.json - frontend - biome.json - legacy - package.json - new - package.json
app/backend/package.json에서 실행되는 비메어 명령어는app/backend/biome.json설정 파일을 사용합니다;app/frontend/legacy/package.json및app/frontend/new/package.json에서 실행되는 비메어 명령어는app/frontend/biome.json설정 파일을 사용합니다;
설정 파일 공유
섹션 제목: “설정 파일 공유”extends 필드를 통해 설정을 여러 파일로 나누는 것이 가능합니다.
이를 통해 다양한 프로젝트나 폴더 간에 공통 설정을 공유할 수 있습니다.
다음은 common.json 설정 파일을 확장하여 자신의 설정을 구성하는 예시입니다:
{ "extends": ["./common.json"]}extends에 정의된 항목은 biome.json 파일이 정의된 경로에서 해결됩니다.
리스트에 나열된 순서대로 처리되며, 이후 파일의 설정이 이전 설정을 덮어씁니다.
비메어는 node_modules/ 디렉터리의 설정 파일을 해결할 수 있습니다.
이를 통해 패키지에서 설정 파일을 내보내고 여러 프로젝트에서 가져올 수 있습니다.
이를 위해서는 먼저 특정 방식으로 공유 가능한 비메어 설정을 구성해야 합니다.
예를 들어, @org/shared-configs라는 패키지에서 공유 설정을 사용하고, @org/shared-configs/biome라는 식별자를 사용한다고 가정해 보겠습니다.
이 패키지의 package.json에 exports 항목을 추가해야 합니다:
{ "name": "@org/shared-configs", "type": "module", "exports": { "./biome": "./biome.json" }}@org/shared-configs가 프로젝트에 올바르게 설치되었는지 확인하고, biome.json 파일을 다음과 같이 업데이트하세요:
{ "extends": ["@org/shared-configs/biome"]}비메어는 작업 디렉터리에서 @org/shared-configs/ 라이브러리를 해결하려 시도합니다.
작업 디렉터리는 다음과 같습니다:
- 명령줄을 사용할 때: 스크립트를 실행하는 디렉터리입니다.
보통package.json의 위치와 일치합니다; - LSP를 사용할 때: 프로젝트의 루트 디렉터리입니다.
해결 알고리즘에 대한 자세한 정보는 Node.js 문서를 참조하세요.
파일 무시
섹션 제목: “파일 무시”비메어가 어떤 파일과 디렉터리를 처리할지 제어하는 첫 번째 방법은 명령줄에서 해당 파일을 나열하는 것입니다.
다음 명령어에서는 file1.js와 src 디렉터리의 모든 파일만 포맷합니다.
디렉터리는 재귀적으로 탐색됩니다.
biome format file1.js src/비메어 설정 파일을 사용하여 어떤 파일이 처리될지를 결정할 수 있습니다.
include를 사용해 처리할 파일을 명시적으로 지정하고, ignore를 사용해 처리하지 않을 파일을 지정할 수 있습니다.
include와 ignore는 src/**/*.js와 같은 글로브 패턴을 받습니다.
지원되는 글로브 문법에 대한 설명은 관련 섹션을 참조하세요.
include는 항상 ignore보다 먼저 적용됩니다.
이를 통해 일부 파일은 포함시키고, 포함된 일부 파일은 무시할 수 있습니다.
비메어는 모든 도구에 적용되는 전역 필드인 files.include와 files.ignore를 제공합니다.
또한 <도구>.include와 <도구>.ignore를 사용하여 도구 수준에서 파일을 포함하거나 무시할 수 있습니다.
이 필드는 전역 files.include 및 files.ignore를 덮어쓰지 않음을 기억하세요.
files.include와 files.ignore는 도구 수준의 include 및 ignore보다 먼저 적용됩니다.
다음과 같은 설정을 살펴보겠습니다:
{ "files": { "include": ["src/**/*.js", "test/**/*.js"], "ignore": ["**/*.min.js"] }, "linter": { "ignore": ["test"] }}다음 명령어를 실행해 보세요:
biome format test/이 명령어는 test 디렉터리에서 확장자가 .js이고, 확장자가 .min.js로 끝나지 않는 파일들을 포맷합니다.
src 디렉터리의 파일들은 포맷되지 않으며, 이유는 명령줄에 해당 디렉터리가 포함되지 않았기 때문입니다.
다음 명령어를 실행하면, test 디렉터리가 라이너에 대해 명시적으로 무시되었으므로, 어떤 파일도 형식 맞추기가 이루어지지 않습니다.
biome lint test/비메어는 작업 디렉터리에서 상대적으로 글로브를 해결합니다.
작업 디렉터리는 일반적으로 명령줄 명령어를 실행하는 디렉터리입니다.
이 의미는 설정 파일이 명령어를 실행하는 위치와 다른 디렉터리에 있다면 특별한 주의를 기울어야 함을 나타냅니다.
편집기(=LSP)의 경우, 작업 디렉터리는 프로젝트의 루트 디렉터리입니다.
backend/와 frontend/ 두 디렉터리로 구성된 프로젝트를 가정해 보겠습니다.
앞서 소개한 비메어 설정 파일이 포함되어 있습니다.
frontend/ 디렉터리 안에 package.json이 있고, 이 파일은 비메어 포맷터를 실행하는 format 스크립트를 정의합니다.
- backend - … - biome.json - frontend - package.json - src - … - test - …
{ "name": "frontend-project", "scripts": { "format": "biome format --write ./" }}frontend/package.json에서 format 스크립트를 실행할 때, 스크립트의 작업 디렉터리는 frontend/가 됩니다.
글로브 패턴 src/**/*.js와 test/**/*.js의 기준 디렉터리는 frontend/가 됩니다.
따라서 frontend/src/ 및 frontend/test/ 디렉터리의 파일들만 포맷됩니다.
{ "files": { "include": ["src/**/*.js", "src/**/*.ts"], "ignore": ["test"] }, "formatter": { "indentStyle": "space" }}잘 알려진 파일
섹션 제목: “잘 알려진 파일”이 파일들은 확장자 대신 파일 이름 기반으로 특별히 처리됩니다.
현재 잘 알려진 파일은 단지 JSON 형식의 파일만 있지만, 새로운 구문 분석기를 도입할 경우 다른 형식을 포함할 수도 있습니다.
다음 파일들은 json.parser.allowComments와 json.parser.allowTrailingCommas가 false로 설정된 JSON 파일로 분석됩니다.
.all-contributorsrc.arcconfig.auto-changelog.bowerrc.c8rc.htmlhintrc.imgbotconfig.jslintrc.nycrc.tern-config.tern-project.vuerc.watchmanconfigmcmod.info
다음 파일들은 json.parser.allowComments가 true이고, json.parser.allowTrailingCommas가 false로 설정된 JSON 파일로 분석됩니다.
이것은 해당 파일을 소비하는 도구들이 주석만 삭제할 수 있기 때문입니다.
.ember-cli.eslintrc.json.jscsrc.jshintrctslint.jsonturbo.json
다음 파일들은 json.parser.allowComments와 json.parser.allowTrailingCommas가 모두 true로 설정된 JSON 파일로 분석됩니다.
이것은 해당 파일을 소비하는 도구들이 이러한 설정에 적응하도록 설계되었기 때문입니다.
.babelrc.babelrc.json.devcontainer.json.hintrc.hintrc.json.oxlintrc.json.swcrcapi-documenter.jsonapi-extractor.jsonbabel.config.jsondeno.jsondevcontainer.jsondprint.jsonjsconfig.jsonjsr.jsonlanguage-configuration.jsontsconfig.jsontypedoc.jsontypescript.json
Glob 문법 설명
섹션 제목: “Glob 문법 설명”글로브 패턴은 파일 이름 집합을 지정합니다.
비메어는 다음 글로브를 지원합니다:
*는 0개 이상의 문자와 일치합니다. 경로 구분자(/)와는 일치하지 않습니다.**는 재귀적으로 디렉터리와 파일을 검색합니다.
이 시퀀스는 반드시 단일 경로 컴포넌트를 구성해야 하며,**a또는b**는 유효하지 않아 오류를 발생시킵니다.
연속된 세 개 이상의*시퀀스도 유효하지 않습니다.[...]는 괄호 안의 어떤 문자와도 일치합니다.
또한 유니코드 순서에 따라 문자 범위를 지정할 수 있습니다. 예를 들어,[0-9]는 0부터 9까지의 문자를 포함합니다.[!...]는[...]의 부정이며, 괄호 안에 없는 어떤 문자와도 일치합니다.
몇 가지 예시:
dist/**는dist디렉터리와 그 하위의 모든 파일과 일치합니다.**/test/**는 어떤 위치에 있든test라는 이름의 디렉터리 아래의 모든 파일과 일치합니다. 예:dist/test,src/test.**/*.js는 모든 디렉터리에서 확장자가.js로 끝나는 모든 파일과 일치합니다.
비메어는 모든 글로브를 **/ 접두사를 가진 것처럼 처리하는 라이브러리를 사용합니다.
이는 src/**/*.js와 **/src/**/*.js가 동일하게 취급됨을 의미합니다.
둘 다 src/file.js와 test/src/file.js 모두와 일치합니다.
Copyright (c) 2023-present Biome Developers and Contributors.