UNPKG

eslint-config-bananass

Version:

ESLint Config for Bananass Framework.๐ŸŒ

147 lines (94 loc) โ€ข 5.87 kB
# bananass <kbd>ํ•œ๊ตญ์–ด</kbd> | <kbd>[English](README.en.md)</kbd> ๋ฐ”๋‚˜๋‚˜<sup>Bananass, ๐ŸŒ๐ŸŒ๐ŸŒ๐ŸŒ</sup>: <kbd>๋ช…์‚ฌ</kbd> ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์œ„ํ•œ ๋ฐฑ์ค€ ํ”„๋ ˆ์ž„์›Œํฌ. > [!IMPORTANT] > > ```js > const whyBananass = { > banana: '๐ŸŒ', > bananas: '๐ŸŒ๐ŸŒ', > bananass: '๐ŸŒ๐ŸŒ๐ŸŒ๐ŸŒ', > } > ``` > > ```js > console.log(('b' + 'a' + +'a' + 'a').toLowerCase() + (!(1/0) + [])[3].repeat(2)); > ``` <!-- markdownlint-disable-next-line md026 --> ## ์•ˆ๋…•, ๋ฐ”๋‚˜๋‚˜! ๋ฐ”๋‚˜๋‚˜<sup>Bananass, ๐ŸŒ๐ŸŒ๐ŸŒ๐ŸŒ</sup> ํ”„๋ ˆ์ž„์›Œํฌ์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.๐ŸŽ‰ ๋ฐ”๋‚˜๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” [๋ฃจ๋ฐ€<sup>LuMir</sup>](https://github.com/lumirlumir)์ด ์ œ์ž‘ํ•œ **์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ<sup>JavaScript</sup>๋ฅผ ์œ„ํ•œ ๋ฐฑ์ค€ ํ”„๋ ˆ์ž„์›Œํฌ**๋กœ, ๋ฐฑ์ค€ Node.js ํ™˜๊ฒฝ์—์„œ์˜ ๋ณด๋‹ค ํŽธ๋ฆฌํ•œ ๋ฌธ์ œํ’€์ด๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋” ์ด์ƒ `readline` ํ˜น์€ `fs` ๋ชจ๋“ˆ์„ ์ด์šฉํ•œ ํ…œํ”Œ๋ฆฟ<sup>Template</sup> ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ ํ›„, ์ผ์ผ์ด ๋ณต์‚ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค! ๋ฐ”๋‚˜๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ†ตํ•ด [**ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค**](https://programmers.co.kr/)์—์„œ ํ•˜๋‚˜์˜ ์†”๋ฃจ์…˜ ํ•จ์ˆ˜<sup>`function solution() {}`</sup>๋ฅผ ์ž‘์„ฑํ•˜๋“ฏ ๋”์šฑ ๊ฐ„ํŽธํ•œ ๋ฌธ์ œ ํ’€์ด๋ฅผ ๊ฒฝํ—˜ํ•ด๋ณด์„ธ์š”. ๊ทธ๋Ÿฐ๋ฐ, ๋ฐฑ์ค€ ๋ฌธ์ œ ํ’€์ด๋ฅผ ํ•˜๋Š”๋ฐ ๊ตณ์ด ํ”„๋ ˆ์ž„์›Œํฌ๊นŒ์ง€ ์•Œ์•„์•ผ ํ• ๊นŒ์š”? ์•„๋ž˜์—์„œ ๊ทธ ์ด์œ ๋ฅผ ์ฐพ์•„๋ณด์ฃ ! ## ์™œ ๋ฐ”๋‚˜๋‚˜์ผ๊นŒ์š”? ์™œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ<sup>JavaScript</sup> ์ƒํƒœ๊ณ„์˜ ์ˆ˜ ๋งŽ์€ ํ”„๋ ˆ์ž„์›Œํฌ ์ค‘ ๋ฌธ์ œ ํ’€์ด์— ํŠนํ™”๋œ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์—†์—ˆ์„๊นŒ์š”? ํ•จ๊ป˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•œ [๋ฐฑ์ค€ 1000๋ฒˆ: A+B](https://www.acmicpc.net/problem/1000) ๋ฌธ์ œ ํ’€์ด ์˜ˆ์ œ๋ฅผ ์‚ดํŽด๋ณด์ฃ ! - ์ „<sup>Before</sup>: ๊ธฐ์กด ๋ฐฉ๋ฒ•์„ ํ†ตํ•œ ๋ฌธ์ œ ํ’€์ด. ```js const readline = require('node:readline'); const { EOL } = require('node:os'); let inputStr = ''; const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); rl.on('line', line => { inputStr = `${inputStr}${line}${EOL}`; }).on('close', () => { console.log(solution(inputStr)); process.exit(0); }); function solution(inputStr) { const input = inputStr .trim() .split(' ') .map(val => Number(val)); const [a, b] = input; return a + b; } ``` - ํ›„<sup>After</sup>: ๋ฐ”๋‚˜๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•œ ๋ฌธ์ œ ํ’€์ด. ```js function solution(input) { const [a, b] = input .trim() .split(' ') .map(Number); console.log(a + b); } module.exports = solution; ``` ์™€์šฐ!๐Ÿ˜ฒ ๋†€๋ž์ง€ ์•Š๋‚˜์š”? ์ด์ œ ์—ฌ๋Ÿฌ๋ถ„๋“ค์€ ๋‹จ์ˆœํ•ด์ง„ ์ฝ”๋“œ์™€ ๋”๋ถˆ์–ด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋กœ์ง์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทผ๋ฐ, ์ด๊ฒŒ ์ „๋ถ€๋ƒ๊ณ ์š”? ๋ฌผ๋ก  ์•„๋‹™๋‹ˆ๋‹ค! - ๋ฐฑ์ค€ Node.js ํ™˜๊ฒฝ์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๋Š” ES2025 ๋“ฑ ์ตœ์‹  ๋ฌธ๋ฒ•์˜ ์‚ฌ์šฉ - ์‚ฌ์šฉ์ž ์ •์˜ ๋ชจ๋“ˆ ๋ฐ `lodash` ๋“ฑ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์‚ฌ์šฉ - ESLint ๋ฐ Prettier ์ž์ฒด ์ง€์› - ํ’๋ถ€ํ•œ ๋ฌธ์„œ ๋ฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์› - ... ์–ด๋–ค๊ฐ€์š”? ๋ฐ”๋‚˜๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ†ตํ•ด ๋”์šฑ ํŽธ๋ฆฌํ•œ ๋ฌธ์ œ ํ’€์ด๋ฅผ ๊ฒฝํ—˜ํ•ด๋ณด๊ณ  ์‹ถ์ง€ ์•Š์œผ์‹ ๊ฐ€์š”?๐Ÿค” ## ๋ฐ”๋‚˜๋‚˜๋กœ ์‹œ์ž‘ํ•˜๊ธฐ React์˜ `create-react-app`, Next.js์˜ `create-next-app` ์ฒ˜๋Ÿผ, **๋ฐ”๋‚˜๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ œ๊ณตํ•˜๋Š” `create-bananass-app`์œผ๋กœ ์ง€๊ธˆ ๋ฐ”๋กœ ์ƒˆ๋กœ์šด ๋ฌธ์ œ ํ’€์ด ํŒจ๋Ÿฌ๋‹ค์ž„์„ ๊ฒฝํ—˜ํ•ด๋ณด์„ธ์š”!** ๋ฐ”๋‚˜๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” `create-bananass-app`์„ ํ†ตํ•ด ์ฆ‰์‹œ ์„ค์น˜ํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! (์‚ฌ์‹ค ์•ฑ<sup>App</sup>์€ ์•„๋‹ˆ์ง€๋งŒ, ๊ทธ๊ฑด ์ค‘์š”ํ•œ๊ฒŒ ์•„๋‹™๋‹ˆ๋‹ค...๐Ÿค”) ```sh npx create-bananass-app my-bananass-app --no-install ``` ๋”์šฑ ์ž์„ธํ•œ ์‚ฌ์šฉ๋ฒ•์€ [๋ฐ”๋‚˜๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ ๋ฌธ์„œ](https://bananass.lumir.page)๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”. ## ๋ฐ”๋‚˜๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ ๋ฌธ์„œ > <https://bananass.lumir.page> ๋ฐ”๋‚˜๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋ฌธ์„œํ™”๋ฅผ ๊ฐ€์žฅ ํฐ ๊ฐ€์น˜๋กœ ์—ฌ๊น๋‹ˆ๋‹ค. ๋ฐ”๋‚˜๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋ชจ๋“  ์‚ฌ์šฉ๋ฒ•๊ณผ ๊ธฐ๋Šฅ์€ [๋ฐ”๋‚˜๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ ๋ฌธ์„œ](https://bananass.lumir.page)์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ## ๊ธฐ์—ฌ(์ด์Šˆ<sup>Issue</sup>, ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ<sup>Pull Request</sup>, ํ† ๋ก <sup>Discussion</sup>) ๋ฐ”๋‚˜๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ์— ๊ด€์‹ฌ์„ ๊ฐ€์ ธ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.๐Ÿ™‡โ€โ™‚๏ธ ์ €ํฌ๋Š” ์—ฌ๋Ÿฌ๋ถ„๋“ค์˜ ์†Œ์ค‘ํ•œ ์‹œ๊ฐ„์„ ๋ฐ”๋‚˜๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ์— ํˆฌ์žํ•ด์ฃผ์‹  ๊ฒƒ์— ๋Œ€ํ•ด ๊ณ ๋งˆ์›€์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฒ„๊ทธ<sup>Bug</sup> ๋ฐ ์ œ์•ˆ<sup>Suggestion</sup> ๋“ฑ ์—ฌ๋Ÿฌ ์ฃผ์ œ์— ๋Œ€ํ•œ ์ด์Šˆ<sup>Issue</sup>, ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ<sup>Pull Request</sup> ๋ฐ ํ† ๋ก <sup>Discussion</sup> ๋“ฑ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ์˜ฌ๋ฐ”๋ฅธ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ™˜๊ฒฝ์„ ์ค€์ˆ˜ํ•˜๊ณ  ๋” ๋‚˜์€ ์˜คํ”ˆ์†Œ์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด, ๋ฐ”๋‚˜๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ์— ๊ธฐ์—ฌํ•˜๊ธฐ ์ „ ๋ฐ˜๋“œ์‹œ ์•„๋ž˜ ๋‚ด์šฉ๋“ค์„ ํ™•์ธํ•ด์ฃผ์„ธ์š”. - [๊ธฐ์—ฌ์ž ํ–‰๋™ ๊ฐ•๋ น ๊ทœ์•ฝ](CODE_OF_CONDUCT.md) - [๊ธฐ์—ฌํ•˜๊ธฐ](CONTRIBUTING.md) ## ๋ฒ„์ „ ์ •์ฑ…<sup>Versioning</sup> ๋ฐ”๋‚˜๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” [์œ ์˜์  ๋ฒ„์ „ ์ •์ฑ…<sup>Sementic Versioning</sup>](https://semver.org/lang/ko/)์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฆด๋ฆฌ์ฆˆ ๋ฒ„์ „์€ `์ฃผ(MAJOR).๋ถ€(MINOR).์ˆ˜(PATCH)` ํ˜•์‹์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ## ๊ธฐ์—ฌ์ž ํ–‰๋™ ๊ฐ•๋ น ๊ทœ์•ฝ<sup>Code of Conduct</sup> ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๊ธฐ์—ฌํ•˜๊ธฐ ์ „, [๊ธฐ์—ฌ์ž ํ–‰๋™ ๊ฐ•๋ น ๊ทœ์•ฝ](CODE_OF_CONDUCT.md)์„ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”. ## ๋ณ€๊ฒฝ ์‚ฌํ•ญ<sup>Change Log</sup> ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์ƒ์„ธํ•œ ๋‚ด์šฉ์„ ํ™•์ธํ•˜๋ ค๋ฉด, [๋ณ€๊ฒฝ ์‚ฌํ•ญ](CHANGELOG.md)์„ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”. ## ๋ณด์•ˆ<sup>Security</sup> ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜์…จ๋‚˜์š”? [๋ณด์•ˆ](SECURITY.md) ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”. ## ๋ผ์ด์„ผ์Šค<sup>License</sup> ๋ฐ”๋‚˜๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” MIT ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. [๋ผ์ด์„ผ์Šค](LICENSE.md) ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.