Git, GitHub
-
git rm โcached [ํ์ผ๋ช
]
โ git add ์ญ์ (index์์ ๊ทธ๋ฅ ์ง์๋ฒ๋ฆฌ๋ ๊ฒ)
ํน์ ํ์ผ์ ์ ์ธํ ๋ ์ฌ์ฉํ์.
-
git resotre a
โ ํ์ผ ์์ ๋์์ ๋, ๊ทธ ์ด์ ์ผ๋ก ๋ฐ๊พธ๋ ์ฝ๋
-
์๋ฒ ์์ํ๊ธฐ npm run start
cat .gitignore
3๊ฐ์ง ํ์ผ๋ค์ด github์ ์ฌ๋ผ๊ฐ์ง ์์๋ค. (git์ด ์ฒ ์ ํ๊ฒ ๋ฌด์ํ๋ค.)
- ์ค์ ๋ก, node_modules ํด๋๋ github์ ์ฌ๋ผ๊ฐ์ง ์์๋ค.
โ ๋ฐ๋ผ์, ์๋ก์ด ํ๊ฒฝ์์ git clone ๋ฐ์ ๋๋ ์ node_modules
๋ฅผ ๋ฐ์์ผ ํ๋ค.
- ๊ทธ๋ ๋ค๋ฉด, node_modules(๋ผ์ด๋ธ๋ฌ๋ฆฌ) ๋ฅผ ์ ์ ์ธํ ๊ฒ์ผ๊น ?
โ package.json
ํ์ผ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค. (์ด๊ฒ๋ง ์์ผ๋ฉด, npm install
๋ก ๋ค์ ๋ง๋ค ์ ์์.)
๋ง์ฝ, ์ค์น๊ฐ ์งํ๋์ง ์๋๋ค๋ฉด, npm install -f
npm run start
๋ฅผ ํ๋ฉด ์๋ฒ ์์!
โ ์๋ฒ ์ข
๋ฃ๋ ctrl + c
- localhost:8000 ๋ค์ด๊ฐ๋ฉด ํํ์ด์ง ๋์์ผ ํ๋ค.
localhost:8000/test
, localhost:8000/test-space
-
react
- ๋ฐ๋์ export default TestPage;
- className=โ โ ์ผ๋ก class ํ์.
style = { {color:โredโ} } ์์ ์๋ ๊ฒ์ js ๊ฐ์ฒด.
๋ฌด์กฐ๊ฑด ์ด๋ ๊ฒ ์จ์ผ ํจ.
GitHub ๋ธ๋ก๊ทธ
gnb(global navigation bar)
- navigation menu. โ ๋ชจ๋ ์ฌ์ดํธ๋ค๋ง๋ค ๋น์ทํ ํํ์ด๋ค.
- ํ์ํ ๋ถ๋ถ๋ง ๋ ๋๋งํ๋ฉด ๋๋ค.
- ๋ง์ฝ ์๋ import (
ctrl + space
) ์๋ ์ํ๋ฉด?
- f1 โ organize imports (imports ์ฌ๊ตฌ์ฑ)
- f1 โ
typescript restart server
ํ๋ฉด ํด๊ฒฐ๋จ.
(vscode๊ฐ ํ๋ก์ ํธ๋ฅผ ๋ค์ ์ฝ๋ ๋ฐฉ์)
- ๋ฅผ ์ฌ์ฉํ๋ฉด, ํ์ด์ง ์ด๋ ์์ด ์์๊ฐ์ ๋ฐ๋๋ค..
ํ์ด์ง๊ฐ ์ด๋ฏธ ๋ฐ์์ ธ ์๋ ์ํ.
๐ก `Link ํ๊ทธ`๋ `gatsby์์๋ง ์ ๊ณต`ํ๋ tag์ด๋ค. (react ์๋)
โ gatsby ๋ ์ด์ฐจํผ ๋ชจ๋ ํ์ผ์ ํ ๋ฒ์ ๋ค ๋ฐ๋๋ฐ, ์ฌ๊ธฐ์ link ๋ฅผ ์ด์ฉํด์ ์ด๋ํ๋ ๊ฒ์ด ํจ์จ์ ์ธ ๊ฒ์ด๋ค. ์ค์ ์ฝ๋์๋ aํ๊ทธ๋ก ํํ๋๋ค.
ํ์ด์ง component ์ค๋ณต (๋งค๋ฒ ๋์ค๋ ํจํด)
- ๋ง์ฝ ์ฝ์
ํด์ผ ํ gnb ๊ฐ ์์ญ๊ฐ๋ผ๋ฉด? ์ผ์ผ์ด ํ๋์ฉ ์ฝ์
ํ ๊ฒ์ธ๊ฐ?
- ๋ง์ฝ gnb๋ฅผ ์์ ํด์ผ ํ๋ค๋ฉด, ์ฝ์
๋ ๋ชจ๋ ํ์ด์ง์ ๋ฐฉ๋ฌธํด์ ์์ ํ ๊ฒ์ธ๊ฐ?
๐ค ํด๊ฒฐ : Head.js ๋ผ๋ component ๋ง๋ค์ด์ ์ค๋ณต ์ ๊ฑฐํ๊ธฐ
src/components/Head.js
๋ง๋ค๊ธฐ.
์ฝ๋ ์ฝ์
ํ๊ณ , component ์ถ๊ฐํ๊ณ ์ถ์ ํ์ด์ง์ <Head />
ํ๋ฉด ๋.
react ๋ component๋ฅผ ๋ผ๋ ํ๊ทธ๋ก ์นํํ๊ฒ๋ ๋ง๋ค์ด์ค๋ค.
Layout ์ปดํฌ๋ํธ ์ถ๊ฐ
- ๊ธฐ์กด์ ์ค๋ณต๋ ๋ถ๋ถ์ ๋ํด component ์ถ๊ฐํ๋ ๋ฐฉ์์ 1์ธ๋ ๋ฐฉ์.
- ์ต๊ทผ ๋ฐฉ์์, ์, ์๋, ์ผ์ชฝ ๋ ์ด์์์ด ๋ค ๋น์ทํ๊ธฐ ๋๋ฌธ์ ์ด ๋ ์ด์์ ํ ์์ฒด๋ฅผ ์์ ๋ง๋ค์ด๋ฒ๋ฆฌ๋ ๋ฐฉ์.
โ ๋ง๋ค์ด์ง ํ ์์๋ค๊ฐ ๊ฐ ํ์ด์ง ๋ณ๋ก ์ฝ์
ํ๋ ์์ผ๋ก ์์
ํ๋ค.
const Layout = ({children}) => {
return (
<span style = {{color:"red"}}>{children}</span>
);
}
function App() {
return (
<>
<Layout>Hello World</Layout>
<div>๋ณธ๋ฌธ ๋ด์ฉ์
๋๋ค.</div>
</>
);
}
โ {children}
์ Layout ํ๊ทธ ์์ โHello Worldโ
๋ฅผ ๋งํ๋ค.
๋ฐ์ํ container , ๊ณ ์ ํ ๋ ์ด์์
.con {
max-width:1200px;
margin-left:auto;
margin-right:auto;
}
.con {
width:1200px;
margin-left:auto;
margin-right:auto;
}
- Layout.module.css
- react ์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ.
- ์์ ์๋ ๋ด์ญ๋ค์ ๊ฐ์ฒด์ฒ๋ผ ๋ถ๋ฌ๋ค ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
static img
- ์ค์นํ ๋๋ ๋ฐ๋์
ctrl + c
โ npm install gatsby-plugin-image gatsby-plugin-sharp gatsby-source-filesystem
๋ก ์ค์น. โ package.json ์ ๋ํ๋์ ์ถ๊ฐ๋จ.
๋ง์ฝ, ์๋๋ฉด ๋ค์ -f ๋ถ์ฌ์ ํ๊ธฐ.
- ํ๋ฌ๊ทธ์ธ ๊น์ง ๋ฃ๊ธฐ.
- ๋ง์ฝ ๋ค์ด๋ก๋ ์ด๋ฏธ์ง๋ฅผ ๋ฃ๊ณ ์ถ๋ค๋ฉด ?
- src/images ์์๋ค๊ฐ ๋ฃ๊ธฐ.
src =โ../images/clifford.jpgโ
์ด๋ฐ ์์ผ๋ก.
GraphQL
๐ก ์ค์ ํ๋ก์ ํธ ํ๋ฉด์, ๊ฐ์ฅ ๋ง์ด ๋ง์ฃผ์น ์๋ฌ.
Layout ์ปดํฌ๋ํธ๋ฅผ `Layout.js` ๋ก ์ ์ฅํ๋๋ฐ, ์ฝ๋์ path๊ฐ `layout` ์ผ๋ก ๋์ด ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ๋์๋ฌธ์ ์ค๋ฅ๋ก ์ธํ **๋ฐํ์ ์๋ฌ**๊ฐ ๊ณ์ ๋ฐ์ํ๋ค.
์ค์ ๋ก ์๊ฐ์ ๋ค์๊ฐ ์ด๋ฌํ ์๋ฌ๊ฐ ๋ฐ์ํ๋คโฆ

- GraphQL : ์ฟผ๋ฆฌ language. ์ฐ๋ฆฌ๊ฐ ๋ฌด์ธ๊ฐ ์์ฒญํ ์ ์๋ค. ์ด๋ฒ ๊ฐ์์๋ Get ๋ฐฉ์๋ง ์ฌ์ฉํจ.
- Layout component ์์ ๋ฌด์ธ๊ฐ ํ์ํ๋ค๋ฉด, GraphQL ํํ
๋ช
๋ นํ๋ฉด ๋๋ค.
- localhost:8000/___graphql
- ํ์ํ ์ฟผ๋ฆฌ ์ถ๊ฐํ ๋๋ ๊ทธ๋ฅ
query MyQuery1 { // ์ด๋ ๊ฒ ์ถ๊ฐ. ์ฌ์ฉ๋ฒ๋ง ์ตํ์.
}
- ์ผ์ชฝ ํ์ผ๋ค์ ์์ฌ๋ฃ๋ค.
ํด๋น ์ฌ๋ฃ ์
๋ ฅํ๊ณ , ctrl + enter ๋ก ํ์ธ ๊ฐ๋ฅ.
- GraphQl ๋ก ํ
์คํธ ํด๋ณด๊ธฐ
Ctrl + Space
: ์๋์์ฑ
Ctrl + Enter
: ์คํ
- GraphQL ์์ ์ฟผ๋ฆฌ๊ฐ ํ๋ ์ผ ๋๋ Query ๋ง ์จ๋ ๋์ง๋ง, ์ฟผ๋ฆฌ๊ฐ 2๊ฐ ์ด์์ผ ๋๋ Query query1 ์ด๋ฐ ์์ผ๋ก ์ด๋ฆ ์จ์ผ ํจ.
mdx ํ์ผ๋
ธ๋๋ฅผ ์ฝ๋ ์ฟผ๋ฆฌ
๐ก ์ค๋ฅ ๋ฐ์ ์ด์ : ๋์์์ ๋ณด์ง ์๊ณ , ๊ธ๋ก ๋์ด ์๋ ์ค๋ช
๊ณผ ์ฝ๋๋ง์ผ๋ก ํ๋ ค๋ค๋ณด๋ blog ํด๋๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ ๋์ณค๋ค. src/blog ์์ mdx ํ์ผ๋ค์ด ์๊ณ , ๊ทธ๊ฒ๋ค์ ์ฝ์ด์ค๋ ๊ณผ์ .
- mdx : markdown ์ ํ์ฅํ ๋ฌธ๋ฒ.
- ๋
ธ๋๋ ๋ฌด์์ธ๊ฐ ?
- Gatsby project ์์ โ file 3๊ฐ๋ฅผ ์ฝ์ด์ค๋ฉด โ node 3๊ฐ๋ฅผ ์ฝ์ด์ค๋ ์์ผ๋ก ๋ฐ๋.
๋ธ๋ก๊ทธ ํฌ์คํธ๋ฆฌ์คํธ
map
- ๋ณํ๋ ๋ฒ์ ์ ๋ณต์ฌ๋ณธ์ ๋ง๋ค๊ณ ์ถ์ ๋ ์ฌ์ฉ.
- arr.map(
ํจ์
); โ ํจ์
๋ ๊ฐ ์์๋ฅผ ๋ณํ๋ ์์๋ก ๋ง๋๋ ๋ก์ง์ ๋ฃ์ด์ผ ํ๋ค.
- map ์ ์ผ์ข
์ mapping ์ ์๋ฏธ.
function ํจ์(input) {
return input * 2;
}
const arr = [1,2,3];
const newArr = arr.map(ํจ์);
const newArr = arr.map((v) => v * 2);
- ๋ฆฌ์กํธ์์ ๋ฐ๋ณต๋ฌธ์ ๋ฌด์กฐ๊ฑด map
- map์ ํตํด ๋ง๋ค์ด์ง๋ ์ต์์ ์๋ฆฌ๋จผํธ์๋ ๋ฐ๋์ key๋ฅผ ์จ์ค์ผ ํจ. unique ํ ๊ฐ์ ์จ์ค์ผ ํ๋ค.
- ๋ง์ฝ allFile.nodes ๊ฐ 10๊ฐ ์๋ค? ๊ทธ๋ฌ๋ฉด 10๋ฒ ๋ฐ๋ณต โ 10๊ฐ์ li๊ฐ ์๊ธด๋ค๊ณ ์ดํดํ๋ฉด ๋จ.
MDX ํ๋ฌ๊ทธ์ธ
- mdx ์ฝ์ผ๋ ค๋ฉด, ํ๋ฌ๊ทธ์ธ ์ค์น ํด์ผํ๋ค.
- ํ์ผ ๋
ธ๋๋ค โ mdx ๋
ธ๋๋ค๋ก ๋ฐ๋.
๋ธ๋ก๊ทธ ํฌ์คํธํ์ด์ง ์ถ๊ฐ
- slug
- velog-์ฒซ-์์ โ ์ด์ฒ๋ผ - ๋ก ์ด์ด์ง ๊ฒ์ slug ๋ผ๊ณ ํ๋ค.
- blog ํด๋ ๋ง๋ค์ด์, blog.js ๋ฃ๊ณ , index.js ๋ก ๋ฐ๊ฟ๋ ์ธ์ํ๋ค.
โ blog ํด๋ ์์ ์์ผ๋ฉด ์ธ์ํ๊ธฐ ๋๋ฌธ. /blog
http://localhost:8000/blog
โ ์ ์ํด๋ ํ์ด์ง๊ฐ ๋์จ๋ค.
๋ธ๋ก๊ทธ ํฌ์คํธํ์ด์ง์์ ์
๋ ฅ๋ slug๋ฅผ ๋ฐํ์ผ๋ก ์ฌ๋ฐ๋ฅธ ํฌ์คํธ๋ฐ์ดํฐ ์ฝ๊ธฐ