Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .changeset/silver-eagles-kneel.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"@naverpay/biome-config": patch
---

πŸš€ biome formatting

PR: [πŸš€ biome formatting](https://github.com/NaverPayDev/code-style/pull/131)
88 changes: 88 additions & 0 deletions packages/biome-config/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
# @naverpay/biome-config

λ„€μ΄λ²„νŽ˜μ΄ μŠ€νƒ€μΌ κ°€μ΄λ“œμ— 맞게 Biome formatter 섀정을 μ»€μŠ€ν…€ν•˜μ—¬ μ œκ³΅ν•©λ‹ˆλ‹€.

> eslint λ₯Ό λŒ€μ²΄ ν•˜κΈ°μ—λŠ” eslint ν”ŒλŸ¬κ·ΈμΈμ΄ λ„ˆλ¬΄ λ°©λŒ€ν•˜μ—¬, `@naverpay/biome-config`λŠ” formatting 역할을 ν•˜λŠ” prettier 만 λŒ€μ²΄ν•˜λ„λ‘ μ„€κ³„λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

## μ„€μΉ˜ 방법

```bash
npm install @naverpay/biome-config @biomejs/biome -D
```

## μ‚¬μš© 방법

biome.json νŒŒμΌμ„ μƒμ„±ν•˜κ³  `@naverpay/biome-config` νŒ¨ν‚€μ§€λ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€.

```json
{
"$schema": "https://biomejs.dev/schemas/2.2.6/schema.json",
"extends": ["@naverpay/biome-config"],
"files": {
"includes": ["**", "!scripts/**", "!apps/web/public/**", "!apps/web/src/assets/lottie/applyCharge.json"]
}
}

```

> ignore 섀정이 μ—†κΈ° λ•Œλ¬Έμ—, `includes`의 `!`둜 λ¬΄μ‹œν•˜κ³  싢은 νŒŒμΌμ„ μ„€μ •ν•΄μ£Όμ„Έμš”.

## CLI

package.json에 슀크립트λ₯Ό μΆ”κ°€ν•˜μ—¬ format 검사λ₯Ό ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

```jsonc
// package.json
{
"scripts": {
"format": "biome check .",
"format:fix": "biome check --write ."
},
}
```

> [lefthook](https://github.com/evilmartians/lefthook)을 μ‚¬μš©ν•΄μ„œ commit λ˜λŠ” push 전에 μŠ€νƒ€μΌ 확인을 μžλ™ν™”ν•  것을 ꢌμž₯ν•©λ‹ˆλ‹€.

## 차이점

- [biome μ—μ„œ μ œκ³΅ν•˜λŠ” assist](https://biomejs.dev/assist/javascript/actions/) κ°€ 기본으둜 ν™œμ„±ν™” λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ prettier λ₯Ό λŒ€μ²΄ν•œλ‹€λ©΄ jsx elements 의 μˆœμ„œκ°€ μ •λ ¬λ˜κ±°λ‚˜, js 객체의 ν‚€κ°€ 정렬될 수 μžˆμŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή μ˜΅μ…˜μ„ μ›μΉ˜ μ•ŠλŠ”λ‹€λ©΄ λ°˜λ“œμ‹œ κΊΌμ£Όμ„Έμš”.
- [organizeImports](https://biomejs.dev/assist/actions/organize-imports/) κ·œμΉ™μ€ eslint 의 `import/order` 와 μΆ©λŒν•˜μ—¬ 기본적으둜 κΊΌμ ΈμžˆμŠ΅λ‹ˆλ‹€. λ‹€μŒ major 버전 λ•Œ biome 둜 λŒ€μ²΄λ  μ˜ˆμ •μž…λ‹ˆλ‹€.

```jsonc
// biome.json
{
"$schema": "https://biomejs.dev/schemas/2.2.6/schema.json",
"assist": {
"actions": {
"source": {
"organizeImports": "off"
}
}
}
}
```

## Integrating with IDE

- code-styleμ—μ„œλŠ” **Formatting을 μœ„ν•΄ Biome**λ₯Ό, **Code-qualityλ₯Ό μœ„ν•΄ ESLint**λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
- IDEμ—μ„œ autofix ν•˜κΈ° μœ„ν•΄ μ•„λž˜ 섀정이 ν•„μš”ν•©λ‹ˆλ‹€.

### VSCode

1. [Biome Extension](https://marketplace.visualstudio.com/items?itemName=biomejs.biome)을 μ„€μΉ˜ν•©λ‹ˆλ‹€.
2. IDEμ—μ„œ Command Palette(CMD/CTRL + Shift + P)λ₯Ό μ—΄κ³  `settings.json`을 μž…λ ₯ν•˜μ—¬ μ„€μ •νŒŒμΌμ„ μ˜€ν”ˆν•©λ‹ˆλ‹€.
3. μ•„λž˜ 섀정을 μΆ”κ°€ν•˜λ©΄ 파일 μ €μž₯μ‹œ Biome config에 맞게 autofix ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

```json
{
"editor.defaultFormatter": "biomejs.biome",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.biome": "explicit"
}
}
```

### WebStorm

Settings > Languages & Frameworks > JavaScript > Prettier μ—μ„œ Prettierλ₯Ό λΉ„ν™œμ„±ν™”ν•˜κ³ , [Biome Plugin](https://plugins.jetbrains.com/plugin/22761-biome)을 μ„€μΉ˜ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
36 changes: 36 additions & 0 deletions packages/biome-config/biome.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"$schema": "https://biomejs.dev/schemas/2.0.6/schema.json",
"formatter": {
"enabled": true,
"indentStyle": "space",
"indentWidth": 4,
"lineWidth": 120,
"lineEnding": "lf"
},
"linter": {
"enabled": false
},
"assist": {
"enabled": true,
"actions": {
"source": {
"organizeImports": "off"
}
}
},
"javascript": {
"formatter": {
"quoteStyle": "single",
"semicolons": "asNeeded",
"trailingCommas": "all",
"bracketSpacing": false,
"bracketSameLine": false,
"arrowParentheses": "always"
}
},
"json": {
"formatter": {
"trailingCommas": "none"
}
}
}
33 changes: 33 additions & 0 deletions packages/biome-config/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"name": "@naverpay/biome-config",
"version": "0.0.0",
"description": "Biome configuration for NaverPay projects",
"keywords": [
"biome",
"config",
"formatter",
"linter",
"naverpay"
],
"repository": {
"type": "git",
"url": "https://github.com/NaverPayDev/code-style.git",
"directory": "packages/biome-config"
},
"license": "MIT",
"author": "NaverPay Frontend",
"type": "module",
"exports": {
".": "./biome.json"
},
"main": "biome.json",
"files": [
"biome.json"
],
"devDependencies": {
"@biomejs/biome": "^2.0.6"
},
"peerDependencies": {
"@biomejs/biome": "^2.0.6"
}
}
1 change: 1 addition & 0 deletions packages/eslint-config/node/rules/import.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ export default {
/**
* Enforce a convention in the order of require() / import statements
* @see https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/order.md
* @deprecated biome organizeImports 둜 λŒ€μ²΄ μ˜ˆμ • https://biomejs.dev/assist/actions/organize-imports/
*/
'import/order': importOrder(),

Expand Down
1 change: 1 addition & 0 deletions packages/eslint-config/react/rules/import.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ export default {
/**
* Enforce a convention in the order of require() / import statements
* @see https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/order.md
* @deprecated biome organizeImports 둜 λŒ€μ²΄ μ˜ˆμ • https://biomejs.dev/assist/actions/organize-imports/
*/
'import/order': importOrder(),

Expand Down
94 changes: 94 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.