Skip to content

Latest commit

ย 

History

History
118 lines (87 loc) ยท 3.74 KB

File metadata and controls

118 lines (87 loc) ยท 3.74 KB

@naverpay/code-style-cli

๋„ค์ด๋ฒ„ํŽ˜์ด ์ฝ”๋“œ ์Šคํƒ€์ผ ํŒจํ‚ค์ง€๋ฅผ ์‰ฝ๊ฒŒ ์„ค์น˜ํ•˜๊ณ  ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” CLI ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

pnpm v10+์—์„œ๋Š” ๋ณด์•ˆ์ƒ์˜ ์ด์œ ๋กœ postinstall ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด CLI๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŒจํ‚ค์ง€ ์„ค์น˜์™€ ์„ค์ • ํŒŒ์ผ ์ƒ์„ฑ์„ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์—์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

npx @naverpay/code-style-cli
  1. ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค. (npm, yarn, pnpm)
  2. ์„ค์น˜ํ•  ํŒจํ‚ค์ง€๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. ์„ ํƒํ•œ ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋˜๊ณ  ์„ค์ • ํŒŒ์ผ์ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ง€์› ํŒจํ‚ค์ง€

ํŒจํ‚ค์ง€ ์„ค์ • ํŒŒ์ผ
@naverpay/eslint-config -
@naverpay/eslint-plugin -
@naverpay/prettier-config .prettierrc
@naverpay/stylelint-config stylelint.config.mjs
@naverpay/markdown-lint .markdownlint.jsonc
@naverpay/editorconfig .editorconfig
@naverpay/oxlint-config .oxlintrc.json
@naverpay/biome-config biome.json
oxfmt .oxfmtrc.json

eslint-config, eslint-plugin์€ ์„ค์ •์ด ๋ณต์žกํ•˜์—ฌ ์„ค์ • ํŒŒ์ผ์„ ์ž๋™ ์ƒ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์„ค์น˜ ํ›„ ์„ค์ •

CLI๋Š” ๊ธฐ๋ณธ ์„ค์ • ํŒŒ์ผ๋งŒ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ์„ค์ •์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ:

  • ์„ค์ • ๋ณ€๊ฒฝ: ์ƒ์„ฑ๋œ ์„ค์ • ํŒŒ์ผ์„ ์ง์ ‘ ์ˆ˜์ •ํ•˜์„ธ์š”.
  • CLI ๋ช…๋ น์–ด: ๊ฐ ํŒจํ‚ค์ง€ README์˜ "CLI" ์„น์…˜์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.
  • IDE ์„ค์ •: ๊ฐ ํŒจํ‚ค์ง€ README์˜ "Integrating with IDE" ์„น์…˜์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์ฃผ์˜ ์‚ฌํ•ญ

  • ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— package.json์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋ฏธ ์„ค์ • ํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ๋ฎ์–ด์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

oxfmt ๊ฐ€์ด๋“œ

oxfmt๋Š” Prettier ํ˜ธํ™˜ ํฌ๋งคํ„ฐ๋กœ, Rust๋กœ ์ž‘์„ฑ๋˜์–ด ๋น ๋ฅธ ์†๋„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Note: oxfmt๋Š” ํ˜„์žฌ alpha ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. VSCode Extension ์ง€์›๋„ experimental ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

oxfmt๋Š” ํ˜„์žฌ extends ์˜ต์…˜์„ ์ง€์›ํ•˜์ง€ ์•Š์•„ ๋ณ„๋„ config ํŒจํ‚ค์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. CLI์—์„œ ๋„ค์ด๋ฒ„ํŽ˜์ด ๊ถŒ์žฅ ์„ค์ •์ด ํฌํ•จ๋œ .oxfmtrc.json์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์„ค์ •

ํ•„์š”์— ๋”ฐ๋ผ ignorePatterns๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

{
    "$schema": "./node_modules/oxfmt/configuration_schema.json",
    "singleQuote": true,
    "semi": false,
    "useTabs": false,
    "tabWidth": 4,
    "endOfLine": "lf",
    "bracketSpacing": false,
    "arrowParens": "always",
    "bracketSameLine": false,
    "printWidth": 120,
    "trailingComma": "all",
    "ignorePatterns": ["dist", "pnpm-lock.yaml", ".github"]
}

CLI

package.json์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ format ๊ฒ€์‚ฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

{
    "scripts": {
        "format": "oxfmt",
        "format:check": "oxfmt --check"
    }
}

Integrating with IDE

VSCode

Warning: oxfmt์˜ VSCode ์ง€์›์€ ํ˜„์žฌ experimental ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

  1. oxc Extension์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  2. settings.json์— ์•„๋ž˜ ์„ค์ •์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
{
    "oxc.enable": true,
    "oxc.fmt.experimental": true,
    "editor.defaultFormatter": "oxc.oxc-vscode",
    "editor.formatOnSave": true,
    "[typescript]": {
        "editor.defaultFormatter": "oxc.oxc-vscode"
    },
    "[javascript]": {
        "editor.defaultFormatter": "oxc.oxc-vscode"
    }
}

WebStorm

oxc-intellij-plugin (v0.0.21 ์ด์ƒ)์„ ์„ค์น˜ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.