๋ค์ด๋ฒํ์ด ์ฝ๋ ์คํ์ผ ํจํค์ง๋ฅผ ์ฝ๊ฒ ์ค์นํ๊ณ ์ค์ ํ ์ ์๋ CLI ๋๊ตฌ์ ๋๋ค.
pnpm v10+์์๋ ๋ณด์์์ ์ด์ ๋ก postinstall ์คํฌ๋ฆฝํธ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ๋์ง ์์ต๋๋ค. ์ด CLI๋ฅผ ์ฌ์ฉํ๋ฉด ํจํค์ง ์ค์น์ ์ค์ ํ์ผ ์์ฑ์ ํ ๋ฒ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
ํ๋ก์ ํธ ๋ฃจํธ์์ ์คํํฉ๋๋ค.
npx @naverpay/code-style-cli- ํจํค์ง ๋งค๋์ ๋ฅผ ์๋์ผ๋ก ๊ฐ์งํฉ๋๋ค. (npm, yarn, pnpm)
- ์ค์นํ ํจํค์ง๋ฅผ ์ ํํฉ๋๋ค.
- ์ ํํ ํจํค์ง๊ฐ ์ค์น๋๊ณ ์ค์ ํ์ผ์ด ์๋์ผ๋ก ์์ฑ๋ฉ๋๋ค.
| ํจํค์ง | ์ค์ ํ์ผ |
|---|---|
| @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๋ 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"]
}package.json์ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ์ฌ format ๊ฒ์ฌ๋ฅผ ํ ์ ์์ต๋๋ค.
{
"scripts": {
"format": "oxfmt",
"format:check": "oxfmt --check"
}
}Warning: oxfmt์ VSCode ์ง์์ ํ์ฌ experimental ๋จ๊ณ์ ๋๋ค.
- oxc Extension์ ์ค์นํฉ๋๋ค.
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"
}
}oxc-intellij-plugin (v0.0.21 ์ด์)์ ์ค์นํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค.