231013(๊ธ) ์ฑ์ฅ
๐ค ์ฑ์ฅ์ผ์ง 7.0
์ฑ
ํ๋ณตํ ์ด๊ธฐ์ฃผ์์(์จ์ธ ๋ค์ด์ด)
์ ๋ด์ฉ์ ์๊ทน๋ฐ์ ์์ํ๋ ์๋ฐํ ์ฑ์ฅ๊ธฐ๋ก
์ด์์๋ ๊ฝ๊ณผ ์ฃฝ์ ๊ฝ์ ์ด๋ป๊ฒ ๊ตฌ๋ณํ๋๊ฐ?
์ฑ์ฅํ๊ณ ์๋ ๊ฒ์ด ์ด์ ์๋ ๊ฒ์ด๋ค.
์๋ช ์ ์ ์ผํ ์ฆ๊ฑฐ๋ ์ฑ์ฅ์ด๋ค!
โ (7.0)<์์ ๊ฐํธ>
ํ์ธ๋ง ํ์ต๋ฒ
์ ์๊ฒ ๋๋งํผ, ์ฑ์ฅ์ผ์ง๋ ์ ๋ง ๊ทธ ๋ ์ ํค์๋ ์ค์ฌ์ผ๋ก ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํ๋๋ก ํ๋ค.
Next.js์ Image src ์๋ฌ
Image ์ปดํฌ๋ํธ์ src์ ๋ฐฑ์๋์์ ๋ฐ์์จ ์ด๋ฏธ์ง url์ ๋ฃ์ด์ฃผ์๋๋ฐ, ์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
Error: Invalid src prop...
์ด๋ Next.js ๊ณต์๋ฌธ์์์๋ ํ์ธํ ์ ์๋๋ฐ, ์ธ๋ถ url์ ํตํด ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ฌ ๋ ์
์ฑ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ค์ง ์๊ธฐ ์ํจ์ด๋ผ๊ณ ํ๋ค. ํด๊ฒฐ๋ฒ์ ์๊ฐ๋ณด๋ค ๋๋ฌด ๊ฐ๋จํ๋ค. next.config.js
ํ์ผ์ ์์ฑํ๊ณ ์๋์ ๊ฐ์ด ์์ฑํด์ฃผ๋ฉด ๋๋ค.
module.exports = {
images: {
domains: ['images.unsplash.com'], // ์ธ๋ถ url์ ํตํด ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ฌ ๋, ํ์ฉํ ๋๋ฉ์ธ์ ์ ์ด์ค๋ค.
},
};
PWA๊ฐ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ์๋น์ค์์ปค?
์๋น์ค์์ปค๋ ์ฐ๋ฆฌ๊ฐ ์์ฑํ ์น ์ฑ์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํํ ์ ์๊ฒ ํด์ฃผ๋ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฅ์ด๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์๋น์ค์์ปค๋ ์ฐ๋ฆฌ ์๋น์ค์ ์คํ์ ๋ฌด์ ์๊ด์์ด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ข ๋ฃ๋์ด๋ ์๋น์ค์์ปค๋ ๊ณ์ ์คํ๋๋ค. ์ด๋ฅผ ์ด์ฉํด์ ์ฐ๋ฆฌ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ข ๋ฃ๋์ด๋ ์๋น์ค์์ปค๊ฐ ์คํ๋๋ ๋์์๋ ํธ์ ์๋ฆผ์ ๋ณด๋ด๊ฑฐ๋, ์คํ๋ผ์ธ์์๋ ์น ์ฑ์ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด๋ค. ์กฐ๊ธ ๋จ์ํ๊ฒ ์๊ฐํ๋ฉด ๋ธ๋ผ์ฐ์ ์ ๋คํธ์ํฌ ์ฌ์ด์์ ํ๋ก์ ์๋ฒ์ ์ญํ ์ฒ๋ผ ๋์ํ๋ค๊ณ ๋ณด๋ฉด๋๋ค. ์๋ฅผ ๋ค๋ฉด ์คํ๋ผ์ธ ์ํ์์๋ ์๋น์ค์์ปค๋ ๋ธ๋ผ์ฐ์ ์ ๋คํธ์ํฌ ์ฌ์ด์์ ์์ฒญ์ ๋ฐ์์ ์บ์ฑ๋ ๋ฐ์ดํฐ๋ฅผ ์๋ตํด์ค๋ค. ๋ํ ์ฐ๋ฆฌ๊ฐ ์คํ๋ผ์ธ์ผ ๋ ์ฑํ ์ ๋ณด๋ด๊ฑฐ๋ ํน์ ์ ์ ์ ์๋ฆผ์ ๋ฐ์์ผ๋๋ ์ํฉ์์ ์จ๋ผ์ธ์ด ๋์๋ง์ ๋ณด๋๋ ์ฑํ ์ด ์ ์ก๋๋ค๊ฑฐ๋ ์๋ฆผ์ด ๋จ๋ ๊ฒ๋ ์๋น์ค์์ปค๋ฅผ ํตํด ๊ฐ๋ฅํ๋ค.
๋ง์ด๊ทธ๋ ์ด์ , ํฌํ , ์ปจ๋ฒํ
์์ฃผ ์ฌ์ํ ์ฐจ์ด์ง๋ง(์ฌ์ค ๊ฑฐ์ ๋ง์ด๊ทธ๋ ์ด์
์ด๋ผ๋ ํํ์ ์ฐ์ง๋ง), ์ด๋ ฅ์๋ฅผ ์์ฑํ๋ค๊ฐ React์์ Next๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ๋ค
๋ ๋ง์ด ๋ง๋๊ฑด๊ฐ ์ถ์ด์ ์ฐพ์๋ณด์๋ค.
- ๋ง์ด๊ทธ๋ ์ด์ : ๊ธฐ์กด ์์คํ ์ ์๋ก์ด ์์คํ ์ผ๋ก ์ฎ๊ธฐ๋ ๊ฒ, ๋ณดํต์ ๋ ๋์ ์ด์ ์ฒด์ ๋ ๋ ๋์ ํ๋์จ์ด๋ก ์ฎ๊ธฐ๋ ๊ฒ์ ์๋ฏธํ๋ค.
- ํฌํ : ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ ๋ค๋ฅธ ์ปดํจํฐ ํ๋ซํผ์ผ๋ก ์ฎ๊ธฐ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์๋ฅผ ๋ค์ด iOS ๋์ํ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ์๋๋ก์ด๋์์ ๋์ํ๊ฒ ํ๋ ๊ฒ๋ ํฌํ ์ด๋ค.
- ์ปจ๋ฒํ : ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์ฎ๊ธฐ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์๋ฅผ ๋ค์ด C++๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ์ Java๋ก ์ฎ๊ธฐ๋ ๊ฒ๋ ์ปจ๋ฒํ ์ด๋ค.
์์ ์ ์๋ค์ ๋ณด๋ ๋ณดํต ์๋น์ค ๊ฐ๋ฐ์๋ค์ด ์ฌ์ฉํ๋ ๋ง์ด๊ทธ๋ ์ด์
์ ์ปจ๋ฒํ
์ ๊ฐ๊น์ด ๊ฒ ๊ฐ๋ค. ๋ฑ ์๋ผ์ ์ ํด์ง ํํ๋ค์ ์๋๋๊น ๊ทธ๋ฅ ๋ง์ด๊ทธ๋ ์ด์
์ผ๋ก ์จ๋ ํฐ ๋ฌธ์ ๋ ์์ ๊ฒ ๊ฐ๋ค.
robots.txt์ sitemap.xml
SEO๋ฅผ ์ํด robots.txt์ sitemap.xml๋ฅผ ์ถ๊ฐํด์ฃผ์๋ค.
- robots.txt: ๊ฒ์์์ง์ด ์ฌ์ดํธ๋ฅผ ํฌ๋กค๋งํ ๋ ์ด๋ค ํ์ด์ง๋ฅผ ํฌ๋กค๋งํ ์ง, ์ด๋ค ํ์ด์ง๋ฅผ ํฌ๋กค๋งํ์ง ์์์ง๋ฅผ ์ ์ํด์ฃผ๋ ํ์ผ์ด๋ค.
- sitemap.xml: ๊ฒ์์์ง์๊ฒ ์ฌ์ดํธ์ ๊ตฌ์กฐ๋ฅผ ์๋ ค์ฃผ๋ ํ์ผ์ด๋ค.
๋ณดํต์ ์ด ๋์ ์ถ๊ฐํด์ฃผ๋ฉด ๊ฒ์์์ง์ด ์ฌ์ดํธ๋ฅผ ํฌ๋กค๋งํ ๋ ๋ ํจ์จ์ ์ผ๋ก ํฌ๋กค๋ง์ ํ ์ ์๋ค๊ณ ํ๋ค. ๋ํ sitemap.xml์ ์ถ๊ฐํด์ฃผ๋ฉด ๊ฒ์์์ง์ด ์ฌ์ดํธ๋ฅผ ํฌ๋กค๋งํ ๋ ๋ ๋น ๋ฅด๊ฒ ํฌ๋กค๋ง์ ํ ์ ์๋ค๊ณ ํ๋ค(ํ์ด์ง์ ๊ตฌ์กฐ๋ฅผ ๋ ๋ช ํํ๊ฒ ์๋ ค์ฃผ๋๊น!).
Next์์๋ ์ ๋ ํ์ผ์ app
์ต์์ ๋ฃจํธ์ ์ถ๊ฐํ๊ฑฐ๋ ๊ฐ๋จํ js(ํน์ ts) ์ฝ๋๋ก ์์ฑํ ์ ์๋ค. ๋๋ ๊ฐ๋จํ๊ฒ ts๋ก ์์ฑํด์ ์์ฑํด์ฃผ์๋ค.
robots.ts
import { MetadataRoute } from 'next';
export default function robots(): MetadataRoute.Robots {
return {
rules: {
userAgent: '*',
allow: '/',
},
sitemap: 'https://best-robbins-fe.vercel.app/sitemap.xml',
};
}
sitemap.ts
import { MetadataRoute } from 'next';
export default function sitemap(): MetadataRoute.Sitemap {
return [
{
url: 'https://best-robbins-fe.vercel.app/',
lastModified: new Date(),
changeFrequency: 'yearly',
priority: 1,
},
{
url: 'https://best-robbins-fe.vercel.app/size',
lastModified: new Date(),
changeFrequency: 'yearly',
priority: 0.8,
},
{
url: 'https://best-robbins-fe.vercel.app/ingredient',
lastModified: new Date(),
changeFrequency: 'monthly',
priority: 0.5,
},
];
}
package.json์ ํธ๋์ ์บ๋ฟ
package.json์์ ๋ฒ์ ์ ๋ช
์ํ ๋ ~
์ ^
๋ฅผ ์ฌ์ฉํ๋๋ฐ, ์ด ๋์ ์ฐจ์ด์ ์ ๋ชฐ๋๋ค. ์ฐพ์๋ณด๋ ์๋์ ๊ฐ์ ์ฐจ์ด๊ฐ ์๋ค๊ณ ํ๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก js ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒ์ ์ Semantic Versioning
์ ๋ฐ๋ฅด๋๋ฐ, ๊ทธ ๊ตฌ์กฐ๋ ์๋์ ๊ฐ๋ค.
MAJOR.MINOR.PATCH
- MAJOR: ๊ธฐ์กด ๋ฒ์ ๊ณผ ํธํ๋์ง ์๋ ์๋ก์ด ๋ฒ์ (ํ์ ํธํ๋์ง ์์)
- MINOR: ๊ธฐ์กด ๋ฒ์ ๊ณผ ํธํ๋๋ ์๋ก์ด ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋ ๋ฒ์ (ํ์ ํธํ๋จ)
- PATCH: ๊ธฐ์กด ๋ฒ์ ๊ณผ ํธํ๋๋ ๋ฒ๊ทธ ์์ ๋ฒ์ (ํ์ ํธํ๋จ)
์์ ๋ด์ฉ์ ๊ธฐ์ตํ๋ฉด ํธ๋์ ์บ๋ฟ์ ๊ตฌ๋ถํ๊ธฐ ์ฝ๋ค.
-
ํธ๋(
~
):MAJOR.MINOR
๊น์ง๋ง ๊ณ ์ ํ๊ณPATCH
๋ ์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ค. ์๋ฅผ ๋ค์ด~1.2.3
์ด๋ผ๊ณ ํ๋ฉด1.2.3
๋ฒ์ ์ ์ฌ์ฉํ๊ณ ,1.2.4
๋ฒ์ ์ด ๋์ค๋ฉด1.2.4
๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ค. ์ฆ, ๋ฒ๊ทธ ์์ ๋ฒ์ ์ ์ ๋ฐ์ดํธํ์ง๋ง ์๋ก์ด ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋๋ ๋ฒ์ ์ ์ ๋ฐ์ดํธํ์ง ์๋๋ค. -
์บ๋ฟ(
^
):MAJOR
๊น์ง๋ง ๊ณ ์ ํ๊ณMINOR.PATCH
๋ ์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ค. ์๋ฅผ ๋ค์ด^1.2.3
์ด๋ผ๊ณ ํ๋ฉด1.2.3
๋ฒ์ ์ ์ฌ์ฉํ๊ณ ,1.3.0
๋ฒ์ ์ด ๋์ค๋ฉด1.3.0
๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ค. ์ฆ, ์๋ก์ด ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋๋ ๋ฒ์ ์ ์ ๋ฐ์ดํธํ์ง๋ง ํ์ ํธํ๋์ง ์๋ MAJOR ์ ๋ฐ์ดํธ๋ ํ์ง ์๋๋ค.
์๋ฌด๋๋ ํ์ํธํ์ด ๋ณด์ฅ๋๋ ์ ์์ ์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ ๊ฒ ํธํ๊ธฐ ๋๋ฌธ์ ๋ณดํต ๊ธฐ๋ณธ์ ์ผ๋ก ์บ๋ฟ์ ์ฌ์ฉํ๋ค.
์ด ๋, ํน์ด์ฌํญ์ผ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒ์ ์ด 1.0.0
์ด์ ์ธ ๊ฒฝ์ฐ๋ pre-release
๋ผ๊ณ ํด์ MAJOR
์
๋ฐ์ดํธ๊ฐ ์๋๋ผ๋ ํ์ํธํ์ด ๋์ง ์๋ api ๋ณ๊ฒฝ์ด ๋น๋ฒํ๊ฒ ์ผ์ด๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์๋ ํธ๋์ ์บ๋ฟ ๋ชจ๋ ํธ๋์ฒ๋ผ ๋์ํ๋ค๊ณ ํ๋ค. ์ฆ, ์ต๋ํ ํ์ํธํ์ ๋ณด์ฅํ๋ฉด์ ๋ฒ๊ทธ ์์ ๋ฒ์ ๋ง ์
๋ฐ์ดํธํ๋ค.
๐ ํ๊ณ
์์ง ์๋ฒฝํ์ง ์์ง๋ง, ์ด๋์ ๋ ๊ธฐ๋ณธ ๊ตฌํ์ผ๋ก๋ Next.js๋ก ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ง์ท๋ค! ๋ฆฌ๋๋ฏธ๋ 1์ฐจ ์ ๋ฆฌ๊ฐ ๋์ด ๋ฌ๊ณ ..! ํโฆ ์ด์ ๋จ์ ํ์ด์ง๋ ๋ ๊ตฌํํ๊ณ ์ถ์๋ ๊ธฐ๋ฅ๋ค์ ์ผ๋ฅธ ๊ตฌํํด์ผ์ง!!!!!!