[vue3] pnpm์ผ๋ก ํ๋ก์ ํธ ์์ฑํ๊ธฐ (ft. @tsconfig/node18/tsconfig.json ์ค๋ฅ)
pnpm์ผ๋ก vue ํ๋ก์ ํธ ์์ฑํ๊ธฐ
vue3 ํ๋ก์ ํธ์ ํจํค์ง ๊ด๋ฆฌ์๋ฅผ pnpm์ผ๋ก ์ ํํ๊ณ ํ๋ก์ ํธ๋ฅผ ์๋ก ์์ฑํด๋ณธ๋ค.
๐ ํ๋ก์ ํธ ์์ฑ
$ pnpm create vue
์์ ๊ฐ์ด ํ๋ก์ ํธ ์์ฑ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ค. pnpm create vue@latest ์ ๋์ผํ๊ฒ ์ต์ ๋ฒ์ ผ์ vue๋ฅผ ์ฌ์ฉํ๋ค.
๋ง์ฝ, ํน์ ๋ฒ์ ผ์. vue๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด "pnpm create vue@์ํ๋๋ฒ์ ผ" ์ผ๋ก ๋ช ๋ น์ด๋ฅผ ์์ ํด์ค๋ค.
๐ ์ต์ ์ ํํ๊ธฐ
โ Project name: …
โ Add TypeScript? … No / Yes
โ Add JSX Support? … No / Yes
โ Add Vue Router for Single Page Application development? … No / Yes
โ Add Pinia for state management? … No / Yes
โ Add Vitest for Unit Testing? … No / Yes
โ Add an End-to-End Testing Solution? › No
โ Add ESLint for code quality? … No / Yes
โ Add Prettier for code formatting? … No / Yes
ํ๋ก์ ํธ๋ฅผ ์์ฑ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ฒ๋ผ ์ต์ ์ ํ๋์ฉ ์ ํํ๊ฒ ์ง์๊ฐ ๋์จ๋ค.
1. ํ๋ก์ ํธ ์ด๋ฆ -> ๋ณธ์ธ์ด ์ํ๋ ํ๋ก์ ํธ ์ด๋ฆ์ ์ ๋๋ค.
2. ํ์ ์คํฌ๋ฆฝ์ค ์ฌ์ฉ์ฌ๋ถ -> ํ์ ์คํฌ๋ฆฝํธ๋ ์ฌ์ฉํ๋ค.
3. JSX ์ฌ์ฉ์ฌ๋ถ -> js์ html๋ฅผ ๊ฒฐํฉํ ์ฝ๋๋ฅผ ์ด์ฉ ๊ฐ๋ฅํ๋ js ๊ณต์ ๋ฌธ๋ฒ์ด ์๋๊ธฐ์ ์ฌ์ฉํ์ง ์๋๋ค.
4. ๋ผ์ฐํฐ ์ฌ์ฉ ์ฌ๋ถ -> url ๋ณ๊ฒฝ์ ๋ผ์ฐํฐ๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ์ ์ถ๊ฐํ๋ค.
5. ํผ๋์ ์ฌ์ฉ์ฌ๋ถ -> ์คํ ์ด์ ์ ์ฉํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ฌ์ฉํ๋ค.
6. vitest ์ฌ์ฉ์ฌ๋ถ -> ๊ฐ์ธ ํ๋ก์ ํธ๋ผ์ ํ ์คํธ๊ฐ ์์ํ์ฌ ์ฌ์ฉํ์ง ์๋๋ค.
7. end-to-end test -> ๋ง์ฐฌ๊ฐ์ง๋ก ์ฌ์ฉํ์ง ์๋๋ค.
8. ESLint -> ๋ฌธ๋ฒ ์ฒดํฌ๋ฅผ ๋์์ฃผ๋ ๊ธฐ๋ฅ์ธ๋ฐ ํธ๋ฆฌํ๋ ์ฌ์ฉํ๋ค.
9. Prettier -> ์์ฑํ ์ฝ๋๋ฅผ ์์๊ฒ ์ ๋ฆฌํด์ฃผ๋ ํ๋ฌ๊ทธ์ธ์ผ๋ก ํธํ๋ ์ฌ์ฉํ๋ค.
์ ํ๋ฌ๊ทธ์ธ๋ค์ ํ์์ ๋ค์ ์ถ๊ฐํ ์ ์์ผ๋ ๋น์ฅ ๋ฌด์์ธ์ง ๋ชจ๋ฅด๊ฒ ์ผ๋ฉด ๋ค No๋ฅผ ์ ํํด๋ ๋ฌด๋ฐฉํ๋ค.
์ ์ฒ๋ผ ํ๋ก์ ํธ๊ฐ ์์ฑ์ด ์๋ฃ๋ฉ๋๋ค.
์ ํํ ์ต์ ๊ตฌ์ฑ์ ๋ฐ๋ผ์ ๋ชจ์์ด ์กฐ๊ธ์ ๋ค๋ฅผ ์ ์์ต๋๋ค.
ํ๋ก์ ํธ ์์ฑ ํ json ํ์ผ์ ๋นจ๊ฐ์ ์ค์ด ์๊ธฐ๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ ์ด ๊ฒฝ์ฐ์๋ ์ฌ์ฉํ๊ณ ์๋ IDE๋ฅผ ๊ป๋ค ์ผ์ฃผ์๋ฉด ๋ฉ๋๋ค.
์์ฑ๋ ํ์ผ์ ์ค์ ์ IDE ์ ์ธ์ํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ์์ต๋๋ค.
์ ์ ๊ฒฝ์ฐ๋ "tsconfig.node.json" ํ์ผ์์ "extends": "@tsconfig/node18/tsconfig.json" ๋ฅผ ์ฐพ์ ์ ์๋ค๋ ์ค๋ฅ๊ฐ ๋์๋๋ฐ IDE๋ก ์ฌ์ฉํ๋ VScode ๋ฅผ ์ฌ๋ถํ ํด์ฃผ๋ ๋ฐ๋ก ํด๊ฒฐ๋์์ต๋๋ค.