220908(๋ชฉ)
๐ชด ์ฑ์ฅ์ผ์ง
์ฑ
ํ๋ณตํ ์ด๊ธฐ์ฃผ์์(์จ์ธ ๋ค์ด์ด)
์ ๋ด์ฉ์ ์๊ทน๋ฐ์ ์์ํ๋ ์๋ฐํ ์ฑ์ฅ๊ธฐ๋ก
์ด์์๋ ๊ฝ๊ณผ ์ฃฝ์ ๊ฝ์ ์ด๋ป๊ฒ ๊ตฌ๋ณํ๋๊ฐ?
์ฑ์ฅํ๊ณ ์๋ ๊ฒ์ด ์ด์ ์๋ ๊ฒ์ด๋ค.
์๋ช ์ ์ ์ผํ ์ฆ๊ฑฐ๋ ์ฑ์ฅ์ด๋ค!
๐ณ ํค์๋ ์ต๋ํ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌ, ์ถํ์ ๋ณด๋ฉด์ ์ค์ค๋ก ์ค๋ช
Project
jaybnb
์ค๋์ ํ๋ก์ ํธ ์์์ ์์, ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธํ
ํ๊ณ ๊นํ๋ธ ๋ธ๋์น๋ถํฐ ์ปค๋ฐ๋ฉ์ธ์ง convention์ ๊ณต๋ถํ๋ค.
์์งํ ํ๋ก์ ํธ ์ธํ
์ด ๋ญ ์ผ๋ง๋ ๋ณต์กํ ๊น ์๊ฐํ๋๋ฐ, ์๊ฐ๋ณด๋ค ๊น์ด ๋ค์ด๊ฐ๋๊น ์์๋๋ฉด ์ข์ ๋ด์ฉ๋ค์ด ์ ๋ง ๋ง์๋ค.
JavaScript
Webpack
Babel
# npm์ผ๋ก ํด๋๊ด๋ฆฌ ์์
npm init -y
# webpack ์ค์น
# -D๋ --save-dev์ ๊ฐ์ผ๋ฉฐ ๊ฐ๋ฐ ์์กด์ฑ์ ๊ฐ์ง๋ฉฐ ํจํค์ง๊ฐ ์ค์น๋๋ค.
# ๋น๋ ์ ๋ฐฐํฌ์ฉ๊ณผ ๊ฐ๋ฐ์ฉ์ ๋๋๊ธฐ ์ํจ์ด๋ค.(๊ตณ์ด ๋ฐฐํฌ์ฉ์๋ ์ด ํจํค์ง๊ฐ ํ์์๊ธฐ ๋๋ฌธ!)
npm install -D webpack web-cli
# ๋ฐ๋ฒจ๊ณผ ๊ด๋ จํ ํจํค์ง ๋ฐ ํ๋ฌ๊ทธ์ธ ์ค์น
# babel-loader๋ webpack์ผ๋ก ๋ฒ๋ค๋งํ ๋, ๋์์ ๋ฐ๋ฒจ๋ก ํธ๋์คํ์ผ๋ง๊น์ง ํ๊ฒ ํด์ฃผ๋
# ๋ง ๊ทธ๋๋ก ๋ฐ๋ฒจ์ ๋ถ๋ฌ์์ฃผ๋ ๋
์!!(์นํฉ์์ ์ง์ํ๋ ๋ค์ํ loader๋ค์ด ์๋ค.)
npm install -D @babel/core @babel/cli @babel/preset-env babel-loader
# css-loader: webpack์ผ๋ก jsํ์ผ์ ๋ฒ๋ค๋งํ ๋, jsํ์ผ์ css๋ฅผ ๋ชจ๋์ฒ๋ผ importํ๋ฉด
# css๋ ๊ฐ์ด ๋ฒ๋ค๋งํด์ฃผ๋ loader
# style-loader: css-loader๋ก ๋ฒ๋ค๋ง ํ ํด๋น css ์ฝ๋๋ฅผ style ํ๊ทธ์ ๋ฃ์ด์ฃผ๋ ์ญํ
npm install -D css-loader style-loader
package.json(npm init ์ ์์ฑ)
{
"name": "jaybnb",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack -w" # โญ npm run build -> webpack -w๊ฐ ์คํ๋๊ฒ ํด์ค๋ค.
},
"repository": {
"type": "git",
"url": "git+https://github.com/f-lab-edu/jaybnb.git"
},
"keywords": [],
"author": "",
"license": "ISC",
"bugs": {
"url": "https://github.com/f-lab-edu/jaybnb/issues"
},
"homepage": "https://github.com/f-lab-edu/jaybnb#readme",
"devDependencies": {
"@babel/cli": "^7.18.10",
"@babel/core": "^7.19.0",
"@babel/preset-env": "^7.19.0",
"css-loader": "^6.7.1",
"style-loader": "^3.3.1",
"webpack": "^5.74.0",
"webpack-cli": "^4.10.0"
}
}
webpack.config.js(์นํฉ ์ค์ ํ ๋ฐ๋ก ๋ง๋ค์ด์ค์ผํ๋ค.)
const path = require('path');
module.exports = {
entry: './src/js/main.js', // ๋ฒ๋ค๋ง์ ์
๊ตฌ(entry)๊ฐ ๋๋ ํ์ผ(์ด ํ์ผ์ ์ฌ๋ฌ ์๋ฐ์คํฌ๋ฆฝํธ ๋ชจ๋ ํ์ผ์ importํ์)
output: {
filename: 'bundle.js', // ๋ฒ๋ค๋ง ํ ์์ฑ๋ js ํ์ผ
path: path.resolve(__dirname, 'dist'), // __dirname์ nodeJS์์ ํ์ฌ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ํ๋ธ๋ค.
},
module: {
// ๋ฒ๋ค๋ง ์, ์งํํ ๊ท์น๋ค
rules: [
{
test: /\.js$/,
include: [path.resolve(__dirname, 'src/js')],
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'],
},
},
},
{
test: /\.css$/i,
use: ['style-loader', 'css-loader'],
},
],
},
devtool: 'source-map',
mode: 'development',
};
Git
Github
์ผ๋ฐ์ ์ผ๋ก ํ๋ก์ ํธ ์์ฑ ์ main
์์๋ ์์
ํ์ง ์๋๋ค.
main
: ์ ํ์ผ๋ก ์ถ์ ๊ฐ๋ฅํ ๋ธ๋์น. ๊ฐ๋ฐ ์์ ์ด ์๋ ๋ฐฐํฌ ์ด๋ ฅ์ ๊ด๋ฆฌํ๋ ๋ธ๋์น๋ก ์ฌ์ฉํ๋ค.develop
: ๊ฐ๋ฐ ์์ ์ ์ํ ๋ธ๋์น๋ก ๊ฐ ๊ธฐ๋ฅ์ ๋ง๋ ์๋ก์ด branch๋ฅผ ์ก๊ณ develop์ mergeํ๋ฉด์ ์งํํ๋ค.feature/aaa
: aaa๋ผ๋ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๊ธฐ ์ํ ๋ธ๋์นrelease-1.2
: ์ด๋ฒ ์ถ์ ๋ฒ์ (1.2)์ ์ค๋นํ๋ ๋ธ๋์นhotfix-1.2.1
: ์ถ์ ๋ฒ์ ์์ ๊ธํ๊ฒ ๋ฒ๊ทธ๋ฅผ ์ก์ ๋ ์ฌ์ฉํ๋ ๋ธ๋์น(1.2๋ฒ์ ์ ์์ ํ์ฌ 1.2.1๋ก ์ ๊ทธ๋ ์ด๋)
์ปค๋ฐ ๋ฉ์์ง ์ปจ๋ฒค์
type: subject
body
footer
type
- feat: ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ
- fix: ๋ฒ๊ทธ ์์
- docs: ๋ฌธ์ ์์
- style: ์ฝ๋ ํฌ๋งทํ , ์ธ๋ฏธ์ฝ๋ก ๋๋ฝ, ์ฝ๋ ๋ณ๊ฒฝ์ด ์๋ ๊ฒฝ์ฐ
- refactor: ์ฝ๋ ๋ฆฌํฉํ ๋ง ํ ๊ฒฝ์ฐ
- test: ํ ์คํธ ์ฝ๋, ๋ฆฌํํ ๋ง ํ ์คํธ ์ฝ๋ ์ถ๊ฐํ ๊ฒฝ์ฐ
- chore: ๋น๋ ์ ๋ฌด ์์ , ํจํค์ง ๋งค๋์ ์์ ๋ฑ
subject
์ ๋ชฉ์ 50์๋ฅผ ๋๊ธฐ์ง ์์ผ๋ฉฐ, ์ฒซ ๊ธ์๋ ๋๋ฌธ์, ๋ง์นจํ๋ ๋ถ์ด์ง ์๋๋ค.
๋ํ, ๊ณผ๊ฑฐ ์์ ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ช
๋ น์ด๋ก ์์ฑํ๋ค.
body
์ ํ์ฌํญ์ด๋ฉฐ 72์ ์ดํ, ์ ๋ชฉ๊ณผ ๊ตฌ๋ถ์ ์ํด ํ ์ค ๋์ด๋ค.
๋ถ์ฐ์ค๋ช
, ์ปค๋ฐ์ ์ด์ ๋ฑ์ ์ ๋๋ค.
footer
์ ํ์ฌํญ์ด๋ฉฐ ์ฃผ๋ก issue tracker id๋ฅผ ์์ฑํ ๋ ์ฌ์ฉํ๋ค.
์์) ์ฌ์ค์ body์ footer๋ ํ์๊ฐ ์๋๋ค.
feat: Add abcdef
chore: Build dev-env
๊ฐ๋ฐ ํ๊ฒฝ ์ธํ ์ ๋ฐ๋์ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ๋ฉด์ ๋ด ํ๋ก์ ํธ์ ํ์ํ ํ๊ฒฝ์ ์๊ฐํ์ฌ ์์ฑํ๋๋ก ํ์! ์๊ฐ์ด ๊ฑธ๋ ค๋ ๊ธฐ์ด๋ฅผ ๋ค์ ธ๋๊ณ ์ด๋ป๊ฒ ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ๊ณ ์ค๊ณํ ์ง๋ฅผ ๊ณ ๋ฏผํ๊ณ ์์ํ ์ ์๋๋ก! ํ๋ฆฌํ์คํธ, ์ปค๋ฐ ์ปจ๋ฒค์ ์ ์ต๋ํ ์ฐพ์๋ณด๋ฉด์ ์ต์ํด์ง๋ ๊ฒ ์ข์ ๊ฒ ๊ฐ๋ค.