[npm Deep Dive] ์ค์ ์ฌ๊ณ ์ฌ๋ก๋ก ์์๋ณด๋ ์ ์์ ๋ฒ์ ๊ด๋ฆฌ์ ์ค์์ฑ
์ํค๋ถ์ค์ npm Deep Dive ์๋
์ฑ๋ฆฐ์ง 1์ผ์ฐจ! ์ถํ ์์ ๋ณด์๋ง์ ๋๋ฌด ๊ฐ๊ณ ์ถ์๋ ์ฑ
์ธ๋ฐ, ๋น์ธ๊ณ ์ ๋๊บผ์ด๊ฑธ ์ธ์ ๋ค๋ณด๋ ํด์ ๋ง์ค์ด๋ ์ฐจ์ ์ฑ๋ฆฐ์ง์ ์ฐธ์ฌํ๋ฉด ์๋
ํ ์ ์์ง ์์๊น ์ถ์ด์ ์ ์ฒญํ๋ค.
์ค๋์ Mission
- 1.1 npm์ ์ ์์ ์ญ์ฌ (~p.20)
- 1.2 ์ ์์ ๋ฒ์ ์ด๋? (~p.52)
๐๋์๊ฒ npm์ด๋
๋จผ์ ์ฑ ์ ์ฝ๊ธฐ์ ์ ๋์๊ฒ npm์ ์ด๋ค ์กด์ฌ์ผ๊น ์๊ฐํด๋ณด์๋ค. ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์์ํ์ง 2๋ ์ ๋๊ฐ ๋์๊ณ , ์ง๊ธ๊น์ง ๋ฌด์ํ๊ฒ ๋ง์ npm install, npm start, npm run dev๋ฅผ ์ณ์์ง๋ง ๊ทธ๋ฅ ๊ฐ๋ฐ์ ํ์ํ ํจํค์ง๋ฅผ ์ค์นํ ์ ์๊ฒ ํ๋ ๊ฒ, ๊ทธ์ ๋๋ก๋ง ์ธ์ํ๊ณ ์์๋ค. npm์ด๋ pnpm์ด๋ yarn์ด๋ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๋ฉด ๋น์ฐํ ์ฐ๋ ๊ฒ. ๋๋ฌด ์ต์ํ๊ณ ๋น์ฐํด์ ๋ ์์๋ณผ ํ์์ฑ์ ๋๋ผ์ง ๋ชปํ๋ค.
npm ์์คํ ์ ๋ํ ์๋ฌธ, ๋ณด๋ค๋ ๊ฐ ๊น์ ๋นก์นจ์ ๋๋ ๊ฒ์ express๋ฅผ ์ฌ์ฉํ๊ธฐ ์์ํ๋ฉด์๋ถํฐ์๋ค. commonJS, ESModule...๋จ์ํ import, require ๊ตฌ๋ฌธ๋ค์ด ์ค๋ฅ์ ์์ธ์ด ๋์๊ณ , ํ ์คํธ ํ๊ฒฝ๋ง๋ค ๋ชจ๋ ๋ฐฉ์์ด ๋ฌ๋ผ ์ค๋ฅ๊ฐ ๋๋๊ฑธ ๋ฐ๋ณตํ๋ค๋ณด๋ ๋ด๊ฐ ๋ชจ๋ ์์คํ , ๋์๊ฐ npm์ ๋ํด ์๋๊ฒ ์๊ตฌ๋ ๊นจ๋ฌ์๋ค. package.json๋ง ๋์๊ฐ ์์ ํ๋ค๋ณด๋ ๋ชจ๋ ์์คํ ๊ณผ npm์ ๋ํ ๋ณธ๊ฒฉ์ ์ธ ๊ด์ฌ์ด ์๊ฒผ๊ณ , ๋น์ฐํ๊ฒ ์ฌ๊ฒจ์ก๋ npm์ด๋ผ๋ ๊ฒ์ด ๋ด๊ฐ ๊ฐ๋ฐ์๊ฐ ๋๊ธฐ ์ํด ์์์ผ ํ ๊ธฐ๋ฐ ๊ธฐ์ ๋ก ๋ค๊ฐ์จ ๊ฒ ๊ฐ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์นจ, ๊ด์ฌ์ด ๋ง ํผ์ด๋๋ ์ฐจ์ npm deep dive๊ฐ ์ถ์๋จ destiny
์ฌ์กฑ์ด ๋ง์์ง๋ง ์ ๋ฆฌํด๋ณด์๋ฉด ๋์๊ฒ npm์ ๊ทธ๋ฅ npm์ด๋ค. ์กด์ฌ ์์ฒด๊ฐ ๋๋ฌด ๋น์ฐํด์ ๊ตณ์ด ๋ญ ๋ ์๊ณ ์ ํ ํ์๋ ์์๋ ๊ฒ์ด๋ค. ํ์ง๋ง ์ด๋ฒ ๊ธฐํ๋ฅผ ํตํด, ๋น์ฐํจ์ ์ดํด์ ์์ญ์ผ๋ก ํ์ฅํด๋ณด๋ ค๊ณ ํ๋ค. ์ ๋๋ก ๊ณต๋ถํด์ ๋ชจ๋ ๋ฐ์์๊ฒ ์ง์ง ์๋ ์ฌ๋์ด ๋ ๊ฑฐ์ผ..
๐ฆnpm
npm์ ์ ์ธ๊ณ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ์๊ฐ ๊ณตํต์ผ๋ก ์ฌ์ฉํ๋ ํจํค์ง ๊ด๋ฆฌ ์์คํ ์ด์ CLI ๋๊ตฌ
npm์ ์ฌ์ฉํ์ฌ ์ ์ธ๊ณ์์ ์ ๋ก๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ํจํค์ง๋ฅผ ์์ฝ๊ฒ ์ค์นํ๊ณ ์ ๋ฐ์ดํธํ์ฌ ํ๋ก์ ํธ ์์กด์ฑ์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ค.
npm์ node package manager๋ค?
์ง๋๊ฐ๋ ๊ฐ๋ฐ์๋ฅผ ๋ถ์ก๊ณ npm์ด ๋ญ์ง ์์ธ์? ๋ผ๊ณ ํ๋ค๋ฉด ๋๋ถ๋ถ node package manager์ด๋ผ๊ณ ํ ๊ฒ์ด๋ค. ๋๋ ์ค๋ ์ด ์ฑ ์ ์ฝ๊ธฐ ์ ์๋ node package manager์ด๋ผ๊ณ ์๊ณ ์์๋ค. ๊ทธ๋ฆฌ๊ณ ์ธํฐ๋ท์ npm์ ๊ฒ์ํด๋ณด๋ฉด ๋๋ถ๋ถ์ ์๋ฃ๋ ๋ธ๋ก๊ทธ์์๋ node package manager์ด๋ผ๊ณ ์ค๋ช ํ๊ณ ์๋ค. ํ์ง๋ง ์ง์ค์ ์กฐ๊ธ ๋ค๋ฅด๋ค.
npm์ ๋ณธ๋ pm๋ผ๋ bash ์ ํธ์์ ์ถ๋ฐํ ํ๋ก์ ํธ์ด๋ค. pm์ pkgmakeinst(package make install)๋ผ๋ bash ํจ์์ ์ถ์ฝ์ด์ด๊ณ , ๋ค์ํ ํ๋ซํผ์์ ์ฌ๋ฌ ํจํค์ง๋ฅผ ์ค์นํ๋ ๊ธฐ๋ฅ์ ํ๋ค๊ณ ํ๋ค.
npm์ ์ด๋ฅผ ๊ณ์นํ ๋๊ตฌ์ด๊ธฐ ๋๋ฌธ์, ๊ตณ์ด ์ฝ์ด๋ก ๋ณด์๋ฉด "node pm"๋๋ "new pm" ์ ๋์ ์๋ฏธ๋ก ์ฐ์ผ์๋ ์์ง๋ง, ๊ณต์์ ์ผ๋ก๋ ์๋์ฒ๋ผ ์ค๋ช ํ๋ค.
npm ์ด๋ฆ์ ๋ํ ๊ณต์ Q&A
Q: "npm"์ "Node package Manager"์ ์ฝ์์ธ๊ฐ์?
A: ๋ง์ ์ฌ๋๋ค์ด ๊ทธ๋ ๊ฒ ์๊ฐํ์ง๋ง, ์ค์ ๋ก npm์ "Node Package Manager"์ ์ฝ์๊ฐ ์๋๋๋ค. ์คํ๋ ค "npm is not an acronym(npm์ ์ฝ์๊ฐ ์๋๋ค)"์ด๋ผ๋ ์ฌ๊ท์ ๋ฐฑํฌ๋ก๋(bacronym, ์ฌํ์ ์ผ๋ก ๋ถํ ์ฝ์)์์ ๋์จ ์ด๋ฆ์ ๋๋ค. ๋ง์ฝ ์ด ํ๋ก์ ํธ ์ด๋ฆ์ด ninaa๋ผ๋ฉด ์ง์ง ์ฝ์๊ฐ ๋์์ ๊ฒ์ ๋๋ค.
npm์ ์ ์ ์ pm์ด๋ผ๋ bash ์ ํธ๋ฆฌํฐ์๋๋ฐ, ์ด๋ ๋ค์ํ ํ๋ซํผ์์ ์ฌ๋ฌ ๊ฐ์ง๋ฅผ ์ค์นํ๋ pkgmakeinst๋ผ๋ bash ํจ์์ ์ถ์ฝํ ์ด๋ฆ์ด์์ต๋๋ค. ๋ง์ฝ npm์ ์ต์ง๋ก ์ฝ์๋ก ๋ณธ๋ค๋ฉด, "node pm"๋๋ "new pm" ์ ๋๊ฐ ๋ ์ ์์ต๋๋ค.
์ฆ, ์ด๋ฆ ์์ฒด๋ ์๋ฏธ ์๋ ๋ฌธ์์ด๋ก ๋ด์ผ ํ๋ค๋ ๊ฒ์ด ๊ณต์์ ์ ์ฅ์ธ ๊ฒ ๊ฐ๋ค.
npm์ ์ฃผ์ ๊ธฐ๋ฅ
npm์ ํ๋ก์ ํธ ์์กด์ฑ ์ค์น ์ธ์๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ ์์ฐ์ฑ์ ๋์ด๊ณ ํ๋ก์ ํธ ๊ด๋ฆฌ ํจ์จ์ฑ์ ๊ทน๋ํํ ์ ์๊ฒ ํ๋ค.
- ํจํค์ง ์ค์น ๋ฐ ๊ด๋ฆฌ: package.json์ dependencies์ devDependencies์ ์ ์ธ๋ ํจํค์ง๋ฅผ node_modules์ ์ค์งํ์ฌ Node.js ๊ธฐ๋ฐ ํจํค์ง์์ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ค.
- ํจํค์ง ๋ฐฐํฌ ๋ฐ ๊ณต์ : npm ๋ ์ง์คํธ๋ฆฌ์ ์๋ฐ์คํฌ๋ฆฝํธ ํจํค์ง๋ฅผ ์ ๋ก๋ ํ ์ ์๊ณ , ๋ ์ค์นํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
- ์คํฌ๋ฆฝํธ ์คํ: package.json์ scripts ํ๋๋ฅผ ํตํด ์ํ๋ ์คํฌ๋ฆฝํธ๋ฅผ cli๋ก ์คํํ ์ ์๋ค.
- ํจํค์ง ์ ๋ณด ํ์ธ: npmjs.com ์ฌ์ดํธ์์ ํจํค์ง์ ๊ฐ์, ์ค์ ์ฝ๋, ์์กด์ฑ, ๋ค์ด๋ก๋ ์ ๋ฑ ์ ๋ฐ์ ์ธ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์๋ค.
โญ์ ์์ ๋ฒ์
์คํ์์ค ์ํํธ์จ์ด๋ ๋งค์ผ๊ฐ์ด ์๋ก์ด ์ฝ๋๊ฐ ์ถ๊ฐ๋๊ณ , ๊ธฐ๋ฅ์ด ๊ฐ์ ๋๋ฉฐ ๋ฐ์ ํ๋ค. ์ด๋ฐ ๋์์๋ ๋ฐ์ ์์์ ํจํค์ง ๋ฒ์ ์ ์ด๋ป๊ฒ ๊ด๋ฆฌํ ๊ฒ์ธ์ง์ ๋ํ ๋ช ํํ ๊ท์น์ด ์๋ค๋ฉด, ๊ฐ๋ฐ์๋ค์ ํฐ ํผ๋์ ๋น ์ง ์๋ฐ์ ์๋ค.
ํจํค์ง๋ฅผ ์ฌ์ฉํ๋ ์ ์ฅ์์ ์ ํ์ง๋ ํฌ๊ฒ ๋ ๊ฐ์ง์ด๋ค.
- โ ์์ ์ฑ์ ์ํด ์์กด์ฑ์ ๊ณ ์
- ๐ํญ์ ์ต์ ํจํค์ง๋ก ์ ๋ฐ์ดํธ
ํ์ง๋ง ์ด ๋ ๊ฐ์ง ๋ฐฉ์ ๋ชจ๋ ๋จ์ ์ด ์๋ค.
์์กด์ฑ์ ๊ณ ์ ํ๋ฉด, ์์ธก ๊ฐ๋ฅํ ํ๊ฒฝ์ ์ ์งํ ์ ์์ง๋ง, ์คํ์์ค์ ๋ฐ์ ์ ๋ฐ์ํ์ง ๋ชปํ๋ค. ํญ์ ์ต์ ๋ฒ์ ์ ์ ์งํ๋ ค๊ณ ํ๋ค๋ฉด ์์์น ๋ชปํ breaking change๋ ๋นํจ์จ์ ์ธ ์ ์ง๋ณด์ ์์ ์ ์๊ฐ๊ณผ ์๋์ง๋ฅผ ์์์ผ ํ๋ค.
๐ก์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ท์น์ด ๋ฐ๋ก, ์ ์์ ๋ฒ์ ์ด๋ค.
sementic versioning, semVer: ์ํํธ์จ์ด ๋ฒ์ ์ด ์๋ฏธ๋ฅผ ๊ฐ์ง๋๋ก ๊ตฌ์ฑํ๋ ํ์ค
์ ์์ ๋ฒ์ ์ ๋ชฉ์ ์ ๋ฒ์ ๋ง ๋ณด๊ณ ๋ ์ด๋ค ๋ณํ๊ฐ ์๊ฒผ๋์ง ์์ธกํ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๋ณด๋ค ์ ์ฐํ๊ณ ์์ ํ๊ฒ ์์กด์ฑ ๊ด๋ฆฌ๋ฅผ ํ ์ ์๋ค.
์ ์์ ๋ฒ์ ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ
์ฃผ, ๋ถ, ์(Major, Minor, Patch)
- ์ฃผ: ํธํ๋์ง ์๋ API ๋ณ๊ฒฝ์ด ์๋ ๊ฒฝ์ฐ
- ๋ถ: ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ง๋ง, ๊ธฐ์กด๊ณผ ํธํ๋๋ ๊ฒฝ์ฐ
- ์: ๋ฒ๊ทธ ์์ ์ฒ๋ผ, ๊ธฐ๋ฅ์๋ ์ํฅ์ด ์๊ณ ํธํ์ฑ๋ ์ ์ง๋๋ ๊ฒฝ์ฐ
๋ฒ์ ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์ฝ์ํ์ฌ, ๋ฒ์ ์ซ์๋ง ๋ณด์๋ ํจํค์ง ์ ๋ฐ์ดํธ ์ ์์๋๋ ์ํ๋๋ฅผ ํ์ ํ ์ ์๋ค.
์ ์์ ๋ฒ์ ์ ๊ตฌ์ฒด์ ๋ช ์ธ
Semantic Versioning 2.0.0
Semantic Versioning spec and website
semver.org
1. ๊ณต๊ฐ API ์ ์ธ
์ ์์ ๋ฒ์ ์ ์ฌ์ฉํ๋ ์ํํธ์จ์ด๋ ๊ณต๊ฐ API๋ฅผ ๋ฐ๋์ ์ ์ธํด์ผ ํ๋ค. ์ด API๋ ์ฝ๋์ ์ ์๋ ์๋ ์๊ณ , ์ค์ง ๋ฌธ์์์ผ๋ก ์กด์ฌํ ์๋ ์๋ค. ์ด๋ค ๋ฐฉ์์ด๋ API๋ ์ ํํ๊ณ ํฌ๊ด์ ์ด์ด์ผ ํ๋ค.
2. ๋ฒ์ ํ์
์ผ๋ฐ ๋ฒ์ ๋ฒํธ๋ ๋ฐ๋์ ์ฃผ.๋ถ.์ (X.Y.Z) ํ์์ ๋ฐ๋ผ์ผ ํ๋ฉฐ, X, Y, Z๋ 0 ์ด์์ ์ ์์ด๋ค. ์ซ์์๋ ์ ํ 0์ด ์์ด์๋ ์ ๋๋ค. ๊ฐ ํญ๋ชฉ์ ์์น์ ์ผ๋ก ์ฆ๊ฐํด์ผ ํ๋ค. ์: 1.9.0 → 1.10.0 → 1.11.0
3. ๋ฒ์ ๋ถ๋ณ์ฑ
์ผ๋จ ๋ฒ์ ์ด ๋ฆด๋ฆฌ์ค๋๋ฉด, ํด๋น ๋ฒ์ ์ ๋ด์ฉ์ ์ ๋ ์์ ํ ์ ์๋ค.๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ๋์ ์๋ก์ด ๋ฒ์ ์ผ๋ก ๋ฆด๋ฆฌ์ค
ํด์ผ ํ๋ค.
4. ์ด๊ธฐ ๊ฐ๋ฐ (์ฃผ ๋ฒ์ 0)
0.y.z ํํ์ ๋ฒ์ ์ ์ด๊ธฐ ๊ฐ๋ฐ ๋จ๊ณ๋ฅผ ์๋ฏธํ๋ค.์ด ๋จ๊ณ์์๋ ๋ชจ๋ ๊ฒ์ด ์ธ์ ๋ ์ง ๋ณ๊ฒฝ๋ ์ ์๋ค.๊ณต๊ฐ API๋ ์์ ์ ์ด์ง ์๋ค๊ณ ๊ฐ์ฃผํด์ผ ํ๋ค.
5. ๊ณต๊ฐ API ์ ์ ๊ธฐ์ค์
๋ฒ์ 1.0.0์ ๊ณต๊ฐ API๊ฐ ์ ์๋์์์ ์๋ฏธํ๋ค. ๊ทธ ์ดํ์ ๋ฒ์ ์ฆ๋ถ์ API์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ธฐ๋ฐ์ผ๋ก ๊ฒฐ์ ๋๋ค.
6. ์ ๋ฒ์ ์ฆ๊ฐ ์กฐ๊ฑด
์ ๋ฒ์ (x.y.Z, ๋จ x > 0)์ ๋ค์์ ๊ฒฝ์ฐ ๋ฐ๋์ ์ฆ๊ฐํด์ผ ํ๋ค:
- API์ ํธํ๋๋ ๋ฒ๊ทธ ์์ ์ด ํฌํจ๋ ๊ฒฝ์ฐ.์ฌ๊ธฐ์ ๋ฒ๊ทธ ์์ ์ด๋ ์๋ชป๋ ๋์์ ๊ณ ์น๋ ๋ด๋ถ ๋ณ๊ฒฝ์ ์๋ฏธํ๋ค.
7. ๋ถ ๋ฒ์ ์ฆ๊ฐ ์กฐ๊ฑด
๋ถ ๋ฒ์ (x.Y.z, ๋จ x > 0)์ ๋ค์์ ๊ฒฝ์ฐ ๋ฐ๋์ ์ฆ๊ฐํด์ผ ํ๋ค:
- API์ ํธํ๋๋ ๊ธฐ๋ฅ์ด ์๋ก ์ถ๊ฐ๋ ๊ฒฝ์ฐ
- ๊ณต๊ฐ API์ ์ผ๋ถ๊ฐ deprecated(์ฌ์ฉ ์ค๋จ ์์ ) ์ผ๋ก ํ์๋ ๊ฒฝ์ฐ
๋ค์์ ๊ฒฝ์ฐ์๋ ์ฆ๊ฐํ ์ ์๋ค(MAY):
- ๋ด๋ถ ์ฝ๋์ ์๋ฏธ ์๋ ๊ธฐ๋ฅ ์ถ๊ฐ๋ ๊ฐ์ ์ด ์๋ ๊ฒฝ์ฐ
๋ถ ๋ฒ์ ์ฆ๊ฐ ์ ์ ๋ฒ์ ์ 0์ผ๋ก ์ด๊ธฐํํด์ผ ํ๋ค.
8. ์ฃผ ๋ฒ์ ์ฆ๊ฐ ์กฐ๊ฑด
์ฃผ ๋ฒ์ (X.y.z, ๋จ X > 0)์ ๋ค์์ ๊ฒฝ์ฐ ๋ฐ๋์ ์ฆ๊ฐํด์ผ ํ๋ค:
- API์ ํธํ๋์ง ์๋ ๋ณ๊ฒฝ์ด ๋ฐ์ํ ๊ฒฝ์ฐ
๋ํ ๋ค์์ ํฌํจํ ์ ์๋ค:
- ๋ถ ๋ฐ ์ ์์ค์ ๋ณ๊ฒฝ
์ฃผ ๋ฒ์ ์ฆ๊ฐ ์ ๋ถ์ ์ ๋ฒ์ ์ 0์ผ๋ก ์ด๊ธฐํํด์ผ ํ๋ค.
9. ํ๋ฆฌ๋ฆด๋ฆฌ์ค ๋ฒ์
ํ๋ฆฌ๋ฆด๋ฆฌ์ค(pre-release) ๋ฒ์ ์ ์ ๋ฒ์ ๋ค์ ํ์ดํ(-) ์ ๋ถ์ด๊ณ , ์ (.)์ผ๋ก ๊ตฌ๋ถ๋ ์๋ณ์ ์ํ์ค๋ฅผ ์ถ๊ฐํ์ฌ ํํํ๋ค.
์ด ์๋ณ์๋ ASCII ์์ซ์ ๋ฐ ํ์ดํ([0-9A-Za-z-])๋ง ํฌํจํด์ผ ํ๋ฉฐ, ๋น์ด ์์ ์ ์๋ค. ์ซ์ ์๋ณ์๋ ์ ํ 0์ ํฌํจํ ์ ์๋ค. ํ๋ฆฌ๋ฆด๋ฆฌ์ค ๋ฒ์ ์ ์ผ๋ฐ ๋ฒ์ ๋ณด๋ค ๋ฎ์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ค. ์ด๋ ํด๋น ๋ฒ์ ์ด ๋ถ์์ ํ๋ฉฐ, ์ผ๋ฐ ๋ฒ์ ์ด ๋ณด์ฅํ๋ ํธํ์ฑ์ ์ถฉ์กฑํ์ง ์์ ์ ์์์ ๋ํ๋ธ๋ค.
์์:1.0.0-alpha,1.0.0-alpha.11.0.0-0.3.71.0.0-x.7.z.921.0.0-x-y-z.--
10. ๋น๋ ๋ฉํ๋ฐ์ดํฐ
๋น๋ ๋ฉํ๋ฐ์ดํฐ๋ ์ ๋๋ ํ๋ฆฌ๋ฆด๋ฆฌ์ค ๋ฒ์ ๋ค์ ํ๋ฌ์ค ๊ธฐํธ(+) ์ ์ (.)์ผ๋ก ๊ตฌ๋ถ๋ ์๋ณ์ ์ํ์ค๋ฅผ ์ถ๊ฐํ์ฌ ํํํ ์ ์๋ค. ์๋ณ์๋ ASCII ์์ซ์ ๋ฐ ํ์ดํ๋ง ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ๋น์ด ์์ด์๋ ์ ๋๋ค. ๋น๋ ๋ฉํ๋ฐ์ดํฐ๋ ๋ฒ์ ์ฐ์ ์์ ๊ณ์ฐ์์ ๋ฌด์๋๋ค. ์ฆ, ๋น๋ ๋ฉํ๋ฐ์ดํฐ๋ง ๋ค๋ฅธ ๋ ๋ฒ์ ์ ๋์ผํ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ค.
์์: 1.0.0-alpha+001, 1.0.0+20130313144700, 1.0.0-beta+exp.sha.5114f851.0.0+21AF26D3----117B344092BD
11. ์ฐ์ ์์ ๊ท์น
๋ฒ์ ๊ฐ์ ์ฐ์ ์์(Precedence) ๋ ์ ๋ ฌ ๊ธฐ์ค์ ๋ฐ๋ผ ๋น๊ต๋๋ค.์ฐ์ ์์ ๊ณ์ฐ ์ ๋ฒ์ ์ ๋ค์ ์์๋ก ๋ถํดํ์ฌ ๋น๊ตํ๋ค:์ฃผ → ๋ถ → ์ → ํ๋ฆฌ๋ฆด๋ฆฌ์ค๋น๋
๋ฉํ๋ฐ์ดํฐ๋ ๋น๊ต ๋์์ด ์๋๋ค.
- ์ฃผ, ๋ถ, ์๋ ํญ์ ์ซ์์ ์ผ๋ก ๋น๊ตํ๋ค. ์์:1.0.0 < 2.0.0 < 2.1.0 < 2.1.1
- ์ฃผ, ๋ถ, ์๊ฐ ๊ฐ์ ๊ฒฝ์ฐ, ํ๋ฆฌ๋ฆด๋ฆฌ์ค ๋ฒ์ ์ ์ผ๋ฐ ๋ฒ์ ๋ณด๋ค ์ฐ์ ์์๊ฐ ๋ฎ๋ค.์์:1.0.0-alpha < 1.0.0
- ๋์ผํ ์ฃผ, ๋ถ, ์ ๋ฒ์ ์ ๋ ํ๋ฆฌ๋ฆด๋ฆฌ์ค ๋ฒ์ ์ ์๋ณ์๋ฅผ ์ผ์ชฝ๋ถํฐ ์ฐจ๋ก๋ก ๋น๊ตํ์ฌ ์ฒซ ์ฐจ์ด๊ฐ ๋๋ ๋ถ๋ถ์์ ์์๋ฅผ ์ ํ๋ค.
- ๋ชจ๋ ์ซ์์ธ ๊ฒฝ์ฐ: ์ซ์์ ์ผ๋ก ๋น๊ต
- ๋ฌธ์๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ: ASCII ์ฌ์ ์ ๋น๊ต
- ์ซ์ ์๋ณ์๋ ๋ฌธ์ ์๋ณ์๋ณด๋ค ํญ์ ๋ฎ๋ค
- ์์ ์๋ณ์๊ฐ ๋ชจ๋ ๋์ผํ ๊ฒฝ์ฐ, ์๋ณ์ ๊ฐ์๊ฐ ๋ ๋ง์ ์ชฝ์ด ๋ ๋์ ์ฐ์ ์์
์์:1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0
์ ์์ ๋ฒ์ ์ ์ ํํ๊ฒ ๋งค์นญํ๋ ์ ๊ท์์ ๋ค์๊ณผ ๊ฐ๋ค. ํ์ง๋ง ๋ณดํต์ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก์ ํธ์์๋ ์ ๊ทํํ์์ ์ง์ ์ฌ์ฉํ๊ธฐ๋ณด๋จ semver ํจํค์ง๋ฅผ ์ฌ์ฉํ๋ค.
^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9A-Za-z-][0-9A-Za-z-]*)(?:\.(?:0|[1-9A-Za-z-][0-9A-Za-z-]*))*))?(?:\+([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?$
๐ก์ ์์ ๋ฒ์ ์ ๋ช ์ธ์ด์ ๊ท์น์ด์ง๋ง, ์ด๋ฅผ ๊ฐ์ ํ๋ ๊ธฐ์ ์ ์ฅ์น๋ ์กด์ฌํ์ง ์๋๋ค. ๋ฐ๋ผ์ ์ด๋ฅผ ๋ฐ๋ฅผ์ง ์ฌ๋ถ๋ ์ ์ ์ผ๋ก ๊ฐ๋ฐ์์ ํ๋จ๊ณผ ์ฑ ์์ ๋ฌ๋ ค ์๋ค.
์ ์์ ๋ฒ์ ๋ฒ์ ์ฐ์ฐ์
npm์์ ์์กด์ฑ ๋ฒ์ ๋ฒ์๋ฅผ ์ง์ ํ ๋ ์์ฃผ ์ฌ์ฉํ๋ ๋ฒ์ ๋ฒ์ ์ฐ์ฐ์๋ค์ด๋ค. package.json์ depedencies์์์ ๋ฒ์ ์ ์ง์ ํ ๋ ํจ๊ป ์ฌ์ฉํ๋ค. ์์ผ๋ก ์ธ ์ ์์ ๋ฒ์ ์ฌ๊ณ ์ฌ๋ฅผ ์ดํดํ๋๋ฐ๋ ํ์์ ์ธ ์ฐ์ฐ์๋ค์ด๋ค.
์ฐ์ฐ์ | ์๋ฏธ | ์์ | ์ค์น ๊ฐ๋ฅํ ๋ฒ์ |
^ | ์ต๋ํ ์ต์ ๋ฒ์ ํ์ฉ (MAJOR ๊ณ ์ ) | ^1.2.3 | >=1.2.3 <2.0.0 |
~ | ํจ์น ๋ฒ์ ๋ง ์์ ๋กญ๊ฒ ์ ๋ฐ์ดํธ (MINOR ๊ณ ์ ) | ~1.2.3 | >=1.2.3 <1.3.0 |
>= | ์ด ๋ฒ์ ์ด์ | >=1.2.3 | 1.2.3 ์ด์ |
<= | ์ด ๋ฒ์ ์ดํ | <=1.2.3 | 1.2.3 ์ดํ |
> | ์ด๊ณผ ๋ฒ์ ๋ง ํ์ฉ | >1.2.3 | 1.2.4 ์ด์ |
< | ๋ฏธ๋ง ๋ฒ์ ๋ง ํ์ฉ | <1.2.3 | 1.2.2 ์ดํ |
- (๋ฒ์) | ๋ฒ์ ๋ฒ์ ์ง์ | 1.2.3 - 1.5.0 | >=1.2.3 <=1.5.0 |
* | ๋ชจ๋ ๋ฒ์ ํ์ฉ | * | ๋ชจ๋ ๋ฒ์ ๊ฐ๋ฅ |
๋น ๋ฌธ์์ด | ์ต์ ์์ ๋ฒ์ ์ฌ์ฉ | "" | npm install ์ ์ต์ ๋ฒ์ |
์ ์์ ๋ฒ์ ์ฌ๊ณ ์ฌ๋ก
์ ์์ ๋ฒ์ ์ ๋ช ๋ฌธํ๋ ๊ท์น์ผ ๋ฟ์ด๋ฉฐ, ์ด๋ฅผ ์๋ฐํ๋๋ผ๋ ์ด๋ฅผ ์ ํํ๊ฑฐ๋ ์ฐจ๋จํ ์ ์๋ ์๋จ์ ์กด์ฌํ์ง ์๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ด ๊ท์น ์ค์ ์ฌ๋ถ๋ ์ ์ ์ผ๋ก ๊ฐ๋ฐ์์ ํ๋จ๊ณผ ๊ด๋ฆฌ์ ์์กดํ๊ฒ ๋๋ค.
๋ง์ ์คํ์์ค ํ๋ก์ ํธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ์์ ๋ฒ์ ์ ํ์์ ์ธ ๋ฒ์ ๊ด๋ฆฌ ๋ฐฉ์์ผ๋ก ์๋ฆฌ์ก์์ง๋ง, ์์ธ์์ด ์๋ฒฝํ๊ฒ ์ง์ผ์ง๋ ๊ฒ์ ์๋๋ค. ์ค์ ๋ก npm ์ํ๊ณ์๋ ์ ์์ ๋ฒ์ ๊ด๋ฆฌ์ ํ์ ์ผ๋ก ์ธํ ์์์น ๋ชปํ ์์กด์ฑ ์ถฉ๋์ด๋ ์ ๋ฐ์ดํธ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ฌ๋ก๋ค์ด ์กด์ฌํ๋ค.
left-pad: 11์ค ํจํค์ง๊ฐ ๋ง๋ ๋ํผ๋
2016๋ , ์๋ฐ์คํฌ๋ฆฝํธ ์ํ๊ณ์์ ๋ฏฟ๊ธฐ ํ๋ ์ผ์ด ๋ฒ์ด์ก๋ค. left-pad๋ผ๋ ์ด๋ฆ์ npm ํจํค์ง๊ฐ ์ญ์ ๋๋ฉด์ ์๋ง์ ๋น๋๊ฐ ๊นจ์ง๊ณ , ์ ์ธ๊ณ ์๋ฐ์คํฌ๋ฆฝํธ ์ํ๊ณ๊ฐ ์ ์ ๋ง๋น๋๋ ์ฌํ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ค.
left-pad๋ ๋ฌธ์์ด ์ผ์ชฝ์ ์ง์ ํ ๊ธธ์ด๋งํผ ๋ฌธ์(์ฃผ๋ก ๊ณต๋ฐฑ ๋๋ 0)์ ์ฑ์์ฃผ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง ๋จ 11์ค์ง๋ฆฌ ์ ํธ๋ฆฌํฐ ํจํค์ง์๋ค. ๊ธฐ๋ฅ์ ๋จ์ํ์ง๋ง, ๋ฌธ์ ๋ ์ด ํจํค์ง๋ฅผ ์์กดํ๊ณ ์๋ ๊ณณ์ด ๋๋ฌด ๋ง์๋ค๋ ์ ์ด๋ค.
๋ํ์ ์ผ๋ก ์ ๋ช ์ ํธ๋ฆฌํฐ ํจํค์ง line-numbers๊ฐ left-pad๋ฅผ ์ฌ์ฉํ๊ณ ์์๊ณ , line-numbers๋ Babel์ ํ์ ํจํค์ง ์ค ํ๋์ธ babel-core-frame์์ ์ฌ์ฉ๋๊ณ ์์๋ค.
left-pad์ ๊ฐ๋ฐ์๋ kik์ด๋ผ๋ ์๋ก์ด ํจํค์ง๋ฅผ npm์ ๋ฑ๋กํ๋ค. ๊ทธ๋ฌ๋ "kik"์ด๋ผ๋ ๋งค์ ์ ์๋น์ค๋ฅผ ์ด์ํ๋ Kik์ฌ๋ก๋ถํฐ ํ์ฌ์ ์ด๋ฆ์ ์ฌ์ฉํ์ง ๋ง๋ผ๋ ์์ฒญ์ ๋ฐ์๋๋ฐ, ์ด ๋ฉ์ผ์ด ๊ฝค๋ ์ ๋ง ๋ง์ด ์์ฃผ ๋ถ์พํ๊ณ , ์ด ์์ค์ npm๋ง์ kik ์ธก์ ์์ ๋ค์ด์ค ํฐ๋ผ ์ด์ ๋์ํ๊ธฐ ์ํด ๊ฐ๋ฐ์๋ ์์ ์ ๋ชจ๋ ํจํค์ง๋ฅผ npm์์ ์ญ์ ํ๋ค. ์ด ์ค์๋ left-pad๋ ํฌํจ๋์ด ์์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์๊ฐ๋ถํฐ left-pad๋ฅผ ์์กดํ๋ ํจํค์ง, ๋น๋ ํด๋ค์ด ์ฐ์์ ์ผ๋ก ์ํฅ์ ๋ฐ์, ์๋ฐ์คํฌ๋ฆฝํธ ์ํ๊ณ ์ ๋ฐ์ด ๋ง๋น๊ฐ ๋์๋ค.
Kik, Left-Pad, and NPM — Oh My!
In case you haven’t heard, a dispute between Kik Messenger and left-pad creator Azer lead to a tremendous amount of builds issues the other…
medium.com
์ด ์ฌ๊ฑด์ ๊ณ๊ธฐ๋ก npm์ ํจํค์ง ์ญ์ ์ ๋ํ ๊น๋ค๋ก์ด ์ ์ฑ ์ ๋์ ํ๋ค.
- ์์กด์ฑ์ด ์กด์ฌํ๋ ํจํค์ง์ ์ญ์ ์ ํ
- ์ ๋ช ํจํค์ง๊ฐ ์ญ์ ๋ ๊ฒฝ์ฐ ์ ์์ ์ธ ์ฌ์ฉ์๊ฐ ๊ฐ์ ์ด๋ฆ์ผ๋ก ๊ฐ์ง ํจํค์ง๋ฅผ ์ ๋ก๋ํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํ security-holder ํจํค์ง ์ถ๊ฐ
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ ์ฑ ์ด์์ง๋ง,,,,์ฌํ๊ฒ๋ ๋ ๋ค๋ฅธ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ๊ฒ ๋๋ค.
left-pad๋ฅผ ๋ณต๊ตฌํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ผ๋ ์ด ์ฌ๊ฑด์ ์ ๋ง ๋ง์ ์ ๋ค์ ์์ฌํ๋ค. ๋ฌธ์ ์ ๋ณธ์ง์ ๋จ์ํ๋ค. kik์ฌ์ ๋ฉ์ผ์ด ์กฐ๊ธ๋ง ๋ ์ ์คํ๋๋ผ๋ฉด, npm์ด ๊ฐ๋ฐ์์ ์์ ๋ค์ด์ฃผ์๋ค๋ฉด-์ด๋ผ๋ if๋ ๊ฐ๋ฅํ์ง๋ง, ๊ทผ๋ณธ์ ์ผ๋ก๋ "์๊ณ ๋จ์ํ ๊ธฐ๋ฅ๋ ์ง์ ๊ตฌํํ๊ธฐ๋ณด๋ค๋ ํจํค์ง๋ก ๊ฐ์ ธ๋ค ์ฐ๋ ๊ดํ"์ด ๋ฌธ์ ๊ฐ ๋ ๊ฒ์ด๋ค. npm ์ํ๊ณ์์๋ ์ง์ ์ค์นํ ํจํค์ง ๋ฟ ์๋๋ผ, ๊ทธ ํจํค์ง๊ฐ ์์กดํ๋ ํจํค์ง์ ์์กด ํจํค์ง๊น์ง ์๋์ผ๋ก ์ค์น๋๋ค. ์ด๋ฐ ๊น์ ์์กด ์ฒด์ธ ์์์, ๊ทผ๊ฐ์ด ๋๋ ๋จ ํ๋์, 11์ค์ง๋ฆฌ ๋จ์ํ ํจํค์ง๊ฐ ์ญ์ ๋์์ ๋ถ์ธ๋ฐ๋ ์ ์ฒด ์์คํ ์ด ์ฐ์์ ์ผ๋ก ๋ง๋น๋์ด๋ฒ๋ฆฐ ๊ฒ์ด๋ค.
everything: npm ์ญ์ ๋ฒํผ ์์ ์ฌ๊ฑด
left-pad ์ฌ๊ฑด ์ดํ, npm์ ์์กด์ฑ์ด ์กด์ฌํ๋ ํจํค์ง์ ๋ํ ์ญ์ ๋ฅผ ์ ํํ๋ ์ ์ฑ ์ ๋์ ํ๋ค. ์ด๋ ์ค์ํ ํจํค์ง๊ฐ ์๊ธฐ์น ์๊ฒ ์ญ์ ๋์ด ์ํ๊ณ ์ ์ฒด๊ฐ ํ๋ค๋ฆฌ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํ ์ฅ์น์๋ค. ํ์ง๋ง ์ด ์ ์ฑ ์ ์๋ก์ด ํ์ ์ ๋ง๋ค์ด๋๋ค.
๋ง์ฝ ๋ชจ๋ ํจํค์ง๋ฅผ ์์กด์ฑ์ผ๋ก ๋ฑ๋กํ๋ค๋ฉด...?
์ด๋ฐ ๊ฐ์ฉ๋ ๋ฐ์์ ํ ๊ฐ๋ฐ์๊ฐ ์์๊ณ , ์ค์ ๋ก ์๋๊น์ง ํ๊ณ , ์ฌ์ง์ด ์ฑ๊ณตํ๋ค.
everything ํจํค์ง๋ npm์ ์กด์ฌํ๋ ๊ฑฐ์ ๋ชจ๋ ํจํค์ง๋ฅผ ์์กด์ฑ์ผ๋ก ์ค์ ํ ํ ๋ฐฐํฌ๋์๊ณ , ์ฌ์ง์ด ๋ฒ์ ์ *๋ก ์ค์ ํ์ฌ ํด๋น ํจํค์ง์ ๋ชจ๋ ๋ฒ์ ์ด ์์กด๋๋ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์ด๋๋ค. everthing ํจํค์ง๊ฐ ์กด์ฌํ๋ ํ, ๋๋ถ๋ถ์ ํจํค์ง๊ฐ ์ญ์ ๊ฐ ๋ถ๊ฐ๋ฅํ๊ฒ ๋๋ ์ํฉ์ด ๋ฒ์ด์ง ๊ฒ์ด๋ค.
์ฅ๋์ค๋ฌ์ด ์๋์์ผ๋, npm์ด ์์กด์ฑ ์ญ์ ์ ํ ์ ์ฑ ์ ๋ฌด์กฐ๊ฑด์ ์ผ๋ก ์ ์ฉํ ๊ฒฐ๊ณผ๊ฐ ์ด๋ค ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ ์ ์๋์ง ์ ํํ๊ฒ ์ง์ด๋ธ ์ ์ด ๋์๋ค. npm ์ํ๊ณ๊ฐ ์ผ๋ง๋ ์ค์ํ๋ ๊ตฌ์กฐ์ ์์กดํ๊ณ ์๋์ง๋ฅผ ์ ๋๋ผํ๊ฒ ๋ณด์ฌ์ค ์ฌ๋ก์ด๋ค.
event-stream: npm์ ์์ ํ๊ฐ
2018๋ ์ธ๊ธฐ ์คํธ๋ฆผ ์ ํธ๋ฆฌํฐ ํจํค์ง event-stream์ ์ ์ฑ์ฝ๋๊ฐ ์ฌ์ด์ง ์ฌ๊ฑด์ด ๋ฐ์ํ๋ค.
event-stream์ Node.js์์ ๋น๋๊ธฐ ์คํธ๋ฆผ ์ฒ๋ฆฌ๋ฅผ ์ฝ๊ฒ ๋ง๋ค์ด์ฃผ๋ ์ ๋ช ์ ํธ๋ฆฌํฐ ํจํค์ง๋ก, ์๋ง์ ์คํ์์ค ํ๋ก์ ํธ๊ฐ ์ง๊ฐ์ ์ ์ผ๋ก ์์กดํ๋ ์ธ๊ธฐ ํจํค์ง์๋ค.
event-stream์ ์ต์ด ๊ฐ๋ฐ์๋ ๋ช ๋ ๊ฐ ์ ์ง๋ณด์๋ฅผ ์งํํ์ง ์์๋๋ฐ, ์ด๋ ๋ ํ ๊ฐ๋ฐ์๊ฐ ์ ์ง๋ณด์๋ฅผ ์ด์ด๊ฐ๊ฒ ๋ค๋ ์์ฌ๋ฅผ ๋ฐํ๋ค. ์ ๊ฐ๋ฐ์๋ ์ด๋ฅผ ์๋ฝํ๊ณ ์์ ๊ถ์ ์๋ํ๋ค.
์๋๋ฐ์ ๊ฐ๋ฐ์๋ ์๋ก์ด ๋ฒ์ ์์ flatmap-streamd์ด๋ผ๋ ํจํค์ง๋ฅผ ์์กด์ฑ์ผ๋ก ์ถ๊ฐํ๋๋ฐ, ์ด flatmap-stream ๋ด๋ถ์ ์ํธํ๋ ๋ฐฑ๋์ด ์ฝ๋๊ฐ ํฌํจ๋์ด ์์ด์ ๋ฌธ์ ๊ฐ ๋์๋ค. event-stream ์์ฒด์๋ ์๋ฌด ๋ฌธ์ ์์ด ๋ณด์์ง๋ง, ์๋ง์ ํ๋ก์ ํธ์์ ๋นํธ์ฝ์ธ ํ์ทจ ์ฝ๋๊ฐ ํฌํจ๋ ํจํค์ง๋ฅผ ๊ฐ์ ์ ์ผ๋ก ์์กดํ๊ฒ ๋ ๊ฒ์ด๋ค.
๋๋ถ๋ถ์ ํจํค์ง๊ฐ ^, ~์ ์์กดํ๋ ๊ฒ์ ๋ ธ๋ฆฐ ์ ์์ ์ธ ํ์์๋ค. ์๋์ ์ผ๋ก ์ ๋ฒ์ ์ ์ ๋ฐ์ดํธํ์ฌ ์๋ ์ค์น๋ฅผ ์ ๋ํ์ผ๋ฉฐ, ์๋์ผ๋ก ์ ๋ฐ์ดํธ๋ ํจํค์ง๋ฅผ ์ฌ์ฉํ๊ฒ ๋์ด ํ์ทจ ์ฝ๋์ ๋ ธ์ถ๋ ๊ฒ์ด๋ค. npm ํจํค์ง ์ํ๊ณ์์ ์ ๋ขฐ๊ฐ ์ด๋ป๊ฒ ๋ณด์ ์ํ์ผ๋ก ๋ฐ๋ ์ ์๋์ง, ์ ์์ ๋ฒ์ ๊ด๋ฆฌ ๊ท์น์ด ์ด๋ป๊ฒ ์ ์ฉ๋ ์ ์๋์ง ๋ณด์ฌ์ค ๋จ์ ์ธ ์์ด๋ค.
์ฑ ์์๋ ์ด๋ณด๋ค ๋ ๋ง์ ์ฌ๋ก๋ค์ ์๊ฐํ๊ณ ์์ง๋ง, ํนํ ์ธ์ ๊น์๋ ์ฌ๋ก๋ค๋ง ์ ๋ฆฌํด๋ณด์๋ค. ์ผ๋ถ ์ฌ๊ฑด์ ์ ์์ ๋ฒ์ ๊ทธ ์์ฒด๋ณด๋ค๋ npm ์ํ๊ณ์ ๊ตฌ์กฐ์ ์ทจ์ฝ์ ์์ ๋น๋กฏ๋ ๋ฌธ์ ์ฒ๋ผ ๋ณด์ด๊ธฐ๋ ํ์ง๋ง, ๊ฒฐ๊ตญ ๋ช ์ธ์ผ ๋ฟ์ธ ์ ์์ ๋ฒ์ ๊ท์น์ด ๊ฐ์ ๋ ฅ์ ๊ฐ์ง์ง ์๋ ํ์ค, ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ์ ์ฉํ๊ฑฐ๋ ๋ฌด์ํ์ ๋ ์ผ๋ง๋ ํฐ ํ์ฅ์ด ์๊ธธ ์ ์๋์ง ๋ณด์ฌ์ฃผ๋ ๋ํ์ ์ธ ์์๋ค์ด์๋ค.
์ด๋ฌํ ์ฌ๋ก๋ค์ ํตํด, ๊ฐ๋ฐ์ ๊ฐ์ธ์ ์ฑ ์์ ๋ํด์ ๋ค์ ํ๋ฒ ์๊ฐํด๋ณด๊ฒ๋ ๊ฒ ๊ฐ๋ค.
์์ ํ๊ฒ npm ์ฐ๊ธฐ
์์์ ๋ดค๋ฏ, ๋ชจ๋ ๊ฐ๋ฐ์๊ฐ ์ ์์ ๋ฒ์ ์ ์๊ฒฉํ ๋ฐ๋ฅด๋ ๊ฒ์ ์๋๋ฉฐ, ๋๋ก๋ ์ด๋ฅผ ์ ์ฉํ๋ ๊ฒฝ์ฐ๊น์ง ์กด์ฌํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๋ก์ด ํจํค์ง๋ฅผ ๋์ ํ๊ฑฐ๋ ๊ธฐ์กด ํจํค์ง๋ฅผ ์ ๋ฐ์ดํธ ํ ๋๋ ๋ฐ๋์ ์ฃผ์ ๊น๊ฒ ๊ฒํ ํ๋ ์ต๊ด์ด ํ์ํ๋ค.
md ํ์ผ, ๋ฆด๋ฆฌ์ค ๋ ธํธ๋ฅผ ๊ผผ๊ผผํ ์ดํด๋ณด๊ณ , ํธํ์ฑ์ด๋ ๋ณด์ ์ธก๋ฉด์์ ๋ฌธ์ ๊ฐ ์๋์ง๋ฅผ ์ค์ค๋ก ์ ๊ฒํด์ผ ํ๋ค.
๋ํ ํจํค์ง๋ฅผ ์ด๋๊น์ง, ์ด๋ค ๊ธฐ์ค์ผ๋ก ์ฌ์ฉํ ์ง์ ๋ํ ๊ณ ๋ฏผ์ ํด๋ณด๋ ๊ฒ๋ ์ค์ํ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ์ํ๊ณ์์๋ left-pad์ฒ๋ผ ๊ทนํ ๋จ์ํ ๊ธฐ๋ฅ์กฐ์ฐจ ํจํค์ง๋ก ๋ถ๋ฆฌ๋์ด ์ ํต๋๋ ์ผ์ด ํํ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์ ์ฅ์ ์ด๊ธฐ๋ ํ์ง๋ง, ๊ณง ๋ถํ์ํ ์์กด์ฑ๊ณผ ๋ณด์ ์ํ์ ๊ฐ๋ฅ์ฑ์ ๋์ผ ์ ์๋ค. ๋ฐ๋ผ์ ํจ์บ์ง๋ฅผ ๋์ ํ๊ธฐ ์ , ๋จผ์ ์๊ฐ์ ํด๋ณด์.
- ์ด ํจํค์ง๋ ์ ๋ง๋ก ๋์ฒด ๋ถ๊ฐ๋ฅํ๊ฐ?
- ์ถฉ๋ถํ ๊ฒ์ฆ๋ ์ปค๋ฎค๋ํฐ ์ ๋ขฐ๋์ ์ ์ง ๊ด๋ฆฌ ๊ธฐ๋ก์ ๊ฐ์ง๊ณ ์๋๊ฐ?
- ์์กด์ฑ ํธ๋ฆฌ๊ฐ ๋ฉ๋ ๊ฐ๋ฅํ ์์ค์ธ์ง, ๊ณผ๋ํ๊ฒ ๋๋ ์์ํ๊ฒ ์ฝํ์์ง๋ ์์๊ฐ?
ํจํค์ง๋ฅผ ๋ฐฐํฌํ๋ ๊ฒ๋, ์ฌ์ฉํ๋ ๊ฒ๋ ๊ฐ๋ฐ์ ๊ฐ์ธ์ ์ฑ ์์ด๋ค. ๊ฐ๋ฐ์์ ๋ฌด์ฌํจ์ด ์คํ์์ค๋ฅผ ์ฌ์ฉํ๋ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค, ๋์๊ฐ ์ต์ข ์ฌ์ฉ์์๊ฒ๊น์ง ํผํด๋ฅผ ์ค ์ ์๋ค. ๋ฐ๋ผ์ ๋ฌด์ฌ์ฝ ๊ฐ์ ธ๋ค ์ฐ๊ธฐ๋ณด๋ค๋ ์ ํ์ด ๊ฐ์ ธ์ฌ ์ํฅ๊ณผ ๋ฆฌ์คํฌ๋ฅผ ์ถฉ๋ถํ ๊ณ ๋ คํ ์ ์๋ ๊ฐ๋ฐ์๊ฐ ๋์ด์ผ ํ๋ค.
์ ์ฉํ ์ฌ์ดํธ
npm | Home
Bring the best of open source to you, your team, and your company Relied upon by more than 17 million developers worldwide, npm is committed to making JavaScript development elegant, productive, and safe. The free npm Registry has become the center of Java
www.npmjs.com
Bundlephobia-ํจํค์ง ํฌ๊ธฐ ์ ๋ณด ํ์ธ
Bundlephobia | Size of npm dependencies
Bundlephobia helps you find the performance impact of npm packages. Find the size of any javascript package and its effect on your frontend bundle.
bundlephobia.com
UNPKG
UNPKG serves metadata about the files in a package when you append ?meta to any package root or subdirectory URL. This will return a JSON object with information about the files in that directory, including path, size, type, and subresource integrity value
www.unpkg.com
Snyk AI-powered Developer Security Platform | AI-powered AppSec Tool & Security Platform | Snyk
Snyk is the trusted platform for developing fast and securing modern AI-based application development. Book a demo today to build and run secure code with the power of AI.
snyk.io