Yestoday-1
๐จ ํ๋ก์ ํธ ์ผ์ง
์ ๋ณด ์ ๋ฌ๋ณด๋จ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๊ฒช์ ์ ๋ค, ๋๋ ์ ๋ค์ ๊ธฐ๋กํ ์ผ์ง
Project
: Yestoday(account book)
๊ธฐํ๋ถํฐ ์์ํด๋ณด๋ ํ๋ก์ ํธ!!! ์ด๋ฒ ํ๋ก์ ํธ๋ ๊ฐ๊ณ๋ถ ์น์ฑ์ ๋ง๋ค๊ธฐ๋ก ๊ฒฐ์ ํ๋ค.
๋ค๋ง, ์ด๋ฏธ ์ํ ์ดํ์ ํตํด ์ด๋์ ๋ ๊ฐ๊ณ๋ถ ์ญํ ์ ํ๋ ์์ธํ ๊ธฐ๋ฅ๋ค์ด ์ ๊ณต๋๊ธฐ์ ์๋ก์ด ๊ธฐํ์ ์๊ฐํด๋ณด์๋ค.
๊ฐ๋ตํ ์ปจ์
์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ ์ ๋ ์ค๋
๋์ ํ ์๋น ๊ธ์ก
์ ์ค์ ํ๋ค. ์๋น ์ ํด๋น ๊ธ์ก๊ณผ ๋ด์ฉ์ ์ ๋ ฅํ๋ค. - ๋ฉ์ธ ํ๋ฉด์๋
์ด์
์์ค๋
์ ๋ํ ์ ๋ณด๊ฐ ๋์จ๋ค. ์ด์
๋ฅผ ํด๋ฆญํ๋ฉด ์ต๊ทผ 1๋ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์บ๋ฆฐ๋ ๋ทฐ๋ก ๋ณผ ์ ์๋ค.
์ฒ์ ํผ๊ทธ๋ง๋ก ๊ฐ๋จํ๊ฒ ๋์์ธ์ ๋ง๋ค์ด๋ณด์๋ค.
๐ฆพ ํ๋ก์ ํธ ๋ชฉํ
- MVC ํจํด ๋ฐ ์ต์ ๋ฒ ํจํด
- ๋ผ์ฐํฐ ๊ตฌํ
- ๊ผญ๊ผญ๊ผญ ์ ์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์์ฑํด์ผํ๊ณ ์ด๋ป๊ฒ ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ ์ง ๋ฏธ๋ฆฌ ์๊ฐํ๊ณ ์์ฑํ๋๋ก ํ์
- ๊ฐ๋ฅํ๋ฉด ๋ค์ํ ๊ฐ๋ฐ ํ๊ฒฝ์ ์๋ํด๋ณด์
- ์์ฌ ๋ ๋ถ๋ ค์ Jest๋ฅผ ์ด์ฉํ์ฌ ํ ์คํธ ์ฝ๋๊น์ง ์์ฑํด๋ณด๊ธฐ
- ์์ฌ ๋ถ๋ฆด ์ ์๋ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด๋ณด์
๐คฉ ๊ฐ๋ฐ ํ๊ฒฝ ์ธํ
์ด๋ฒ ๊ฐ๋ฐ ํ๊ฒฝ ์ธํ
์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์นํฉ, ๋ฐ๋ฒจ์ ์ค์ ํ๊ณ git add ๋ฐ commit ์ lint ์์
์ ํด์ฃผ๋ eslint ์ค์ ๊น์ง ํด๋ณด์๋ค.
์์ฌ๊ฐ์์๋ Jest๊น์ง ๊ตฌ์ฑํ๊ณ ์ถ์๋ฐ, ๋น์ฅ TDD๋ก ํ๋ก์ ํธ๋ฅผ ์งํํ ๊ฒ๋ ์๋๋ผ์ ์ผ๋จ์ ๊ณต๋ถ๋ง ํ๊ณ ์ ์ธํ๋ค.
eslint์ prettier๋ ๊ฐ์ด ์ ์ฉํ๋ คํ๋๋ฐ, ์ด๋ฏธ vscode extension์ผ๋ก prettier๋ฅผ ์ฌ์ฉํ๊ณ ์๋ํฐ๋ผ ๊ฐ๋ฐํ๊ฒฝ์๋ ๋ฐ๋ก ๊ตฌ์ฑํ ํ์๋ฅผ ๋ชป๋๊ผ๋ค.
Webpack config
const path = require('path');
module.exports = {
mode: 'development',
entry: './src/app.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist'),
},
module: {
rules: [
{
test: /\.m?js$/,
loader: 'babel-loader',
exclude: /(node_modules|bower_components)/,
},
{
test: /\.s[ac]ss$/i,
use: ['style-loader', 'css-loader', 'sass-loader'],
},
],
},
};
Babel config
{
"presets": [
[
"@babel/preset-env",
{
"modules": "auto",
"useBuiltIns": "entry",
"corejs": "3"
}
]
]
}
Eslint config
module.exports = {
env: {
browser: true,
es2021: true,
node: true,
},
extends: 'eslint:recommended',
overrides: [],
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
},
rules: {},
};
์ฌ์ค ๊ทธ๋์ ๋์ถฉ ๋์ด๊ฐ๋ Babel config์์ ๋ค์ํ ์ค์ ๊ฐ๋ค์ ๋ํด์ ์ดํดํ ์ ์์๋ค.