์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ์ฑ๋ง๋ค๊ธฐ
- Encodable
- ์ฑ๋์์ธ
- components
- ExpressJS
- Decodable
- SWiFT
- Codable
- Core Data
- String.Index
- mongoose
- Firestore
- AVAudioPlayer
- Firestore CRUD
- map
- ios
- Mac
- MongoDB
- Reduce
- nodejs
- Cloud Firestore
- UIRefreshController
- ์๊ณ ๋ฆฌ์ฆ
- ์ง๋ฒ๋ณํ
- RxSwift
- ํ๋ก๊ทธ๋๋จธ์ค
- Figma
- CRUD
- Filter
- DispatchQueue
- Today
- Total
Focus On Develop ๐ค๐ค
[๋ชจ๋๋์] yarn๊ณผ npm ํบ์๋ณด๊ธฐ ๋ณธ๋ฌธ
์๋ ํ์ธ์~! ๐
์ต๊ทผ์ ReactNative์ ์๋๋ก์ด๋๊น์ง ๊ฐ๋ฐํด๋ณผ ์ ์๋ ๊ธฐํ๊ฐ ์๊ฒผ์ด์!
๊ทธ๋ฐ๋ฐ ์๋ฌด๋๋ ์ ๋ iOS๊ฐ๋ฐ์๋ค๋ณด๋ ๋ค๋ฅธ ํ๋ซํผ์์ ๊ฐ๋ฐํ๊ธฐ ์ํด์๋ ๋ง์ ๊ณต๋ถ๊ฐ ํ์ํ๊ฒ ์ฃ ใ .ใ
๊ทธ๋๋ ์ด๋ ๊ฒ ๋ค์ํ ํ๋ซํผ์ ๋ํด ๊ณต๋ถํด๋ณผ ์ ์๋ ๊ธฐํ๊ฐ ์๊ฒจ์ ์ด์ฌํ ํด๋ณด๋ ค๊ณ ์!!
์นดํ ๊ณ ๋ฆฌ ์ด๋ฆ์.. ๋ชจ๋๋์ ์ด๋ผ๊ณ ์ง์ด๋ดค๋๋ฐ์!
๋ชจ๋ฐ์ผ ํ๋ซํผ ๋ํ๋ฅผ ์ํ ๋๊ณ ์์ ์ง์ ์ด๋ผ๋ ์๋ฏธ์์ง ใ ใ ใ ใ ๐ค
๋ธ๋ก๊ทธ๋ ์์ผ๋ก๋ ์ฌ์ ํ iOS์ ๊ดํ ํฌ์คํ ์ด ๋ฉ์ธ์ด ๋๊ฒ ์ง๋ง, ์๋๋ก์ด๋๋ ReactNative์ ๊ด๋ จ๋ ํฌ์คํ ๋ ์์ฃผ ๊ธฐ์ด์ ์ธ ๊ฒ๋ถํฐ ์ข ์ข ์๊ธธ ๊ฒ ๊ฐ์์!
์๋ฌดํผ ์ฒ์์ ๊ฐ๋ฐํ๊ฒฝ์ ์ธํ ํ๊ณ , Package Dependency๋ฅผ ๊ด๋ฆฌํ๋ ํ๊ฒฝ์ ์ธํ ํด์ผ ํ๋๋ฐ์!
์ ๊ฐ ๊ฐ๋ฐํ๋ ํ๊ฒฝ์ yarn์ ํตํด ๋ํ๋์๋ฅผ ๊ด๋ฆฌํ๊ณ ์์ด์!
์.. ใ ใ ๊ทผ๋ฐ yarn์ด ๋ญ๋ฐ..? ๋ถํฐ ๋ชจ๋ฅด๋๊ฒ ์์๋์์ด์.
๊ทธ๋์ ์ค๋์ yarn์ ๋ํด ๊ฐ๋จํ๊ฒ ํบ์๋ณด๊ณ , yarn๊ณผ ๊ฐ์ ์ญํ ์ ํ๋ npm๋ ๊ฐ์ด ํบ์๋ณผ๊ฑฐ์์! ๐
์ํผ ๋ ์๋๊ฐ ๊ธธ์์ต๋๋ท ๐ค
node๊ธฐ๋ฐ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์งํํ ๋ ๋ง์ด ์ฐ์ด๋ ํจํค์ง ๊ด๋ฆฌ Tool๋ก๋ ๋ํ์ ์ผ๋ก npm๊ณผ yarn์ด ์์ด์.
npm๊ณผ yarn์ ๋ชจ๋ javascript package manager์์.
์ฌ๊ธฐ์ ํจํค์ง๋ ๋ํ๋์ ํจํค์ง๋ฅผ ํฌํจํ npm์ ์ ๋ก๋๋ ๋ ธ๋๋ชจ๋์ ์ผ์ปซ์ต๋๋ค.
npm์ ํจํค์ง๋ฅผ ์ ๋ก๋ํ๋ฉด ํจํค์ง ๋ค์ด๋ก๋, ์ค์น, ์ ๊ฑฐ, ์ ๋ฐ์ดํธ ๋ฑ์ ํด์ค์ผํ๋ ๋ณต์กํ ์ํฉ๋ค์ด ์๊ธฐ๋๋ฐ์,
ํนํ npm์ ์ ๋ก๋๋ ๋ค์ํ ํจํค์ง๊ฐ ์์๊ฑฐ๊ณ , ํจํค์ง๊ฐ ๋ค๋ฅธ ํจํค์ง๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ํจํค์ง๋ผ๋ฆฌ๋ ์์กด๊ด๊ณ๊ฐ ์๊ธฐ๊ธฐ๋ ํ์ฃ .
์ด๋ฌํ ๊ณผ์ ๊ณผ ๋ณต์กํ ์ํฉ์ ์๋ํํด์ ์ฝ๊ณ ์์ ํ๊ฒ ๊ด๋ฆฌํ ์ ์๋๋ก ํด์ฃผ๋๊ฒ package manager์ ์ญํ ์ด์์!
์ค์ผ์ด~~~ ์ด์ npm๊ณผ yarn์ด ๋ญํ๋ ์ ๋ค์ธ์ง๋ ๊ฐ์ก์์ค~~~ ๊ทธ๋ผ ๋์ ์ฐจ์ด๋ ๋ญ๋ฐ!?
npm (Node Package Manager)
Node.js์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ์ด๋ ํจํค์ง ๋งค๋์ ์์. npm์ ์ฐ๋ฆฌ๊ฐ ๋ช ๋ น์ด๋ก ์ด๊ฒ์ ๊ฒ ์คํํ๊ฒ ํด์ฃผ๋ command-line client ์ npm registry๋ผ๋ ์จ๋ผ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ด๋ฃจ์ด์ ธ ์์ด์.
yarn
yarn์ facebook์์ ๋ง๋ ํจํค์ง ๋งค๋์ ์์. yarn์ npm์ ๋ช๊ฐ์ง ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด ๋ง๋ค์ด์ก๋ค๊ณ ํด์. ์ฌ๊ธฐ์ npm์ ๋จ์ ์ ์๋(performance), ์์ ์ฑ(stability), ๋ณด์์ฑ(security) ๋ฑ์ด ์๋ค๊ณ ํ๋๋ฐ์! ๊ทธ๋ ๋ค๋ฉด npm๊ณผ ํ๋ ์ญํ ์ ๊ฐ์ง๋ง ์ด ์ธ๊ฐ์ง๋ yarn์ ์ฌ์ฉํ๋๊ฒ ์กฐ๊ธ ๋ ์ฅ์ ์ ์ทจํ ์ ์๊ฒ ๋ค์.
์๋(performance)
yarn์ ๋ค์ด๋ฐ์ ํจํค์ง ๋ฐ์ดํฐ๋ฅผ ์บ์(cache)์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์ค๋ณต๋ ๋ฐ์ดํฐ๋ ๋ค์ด๋ก๋ ํ์ง์๊ธฐ ๋๋ฌธ์ npm์ ๋นํด ํจํค์ง ์ค์น์๋๊ฐ ๋น ๋ฆ ๋๋ค. ๋ํ ์ฌ๋ฌ๊ฐ์ ํจํค์ง๋ฅผ ์ค์นํ ๋ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ performance์ speed๊ฐ ์ฆ๊ฐ ๋ฉ๋๋ค. (npm์ ์์ฐจ์ ) ๊ทธ๋ฌ๋ ์ด ์๋ ์ฐจ์ด๋ ๋งค์ฐ ๊ทผ์ํ ์ฐจ์ด๋ผ๊ณ ํฉ๋๋ค ๐
์์ ์ฑ(stability)๊ณผ ๋ณด์์ฑ(security)
npm์ ํจํค์ง๊ฐ ์ค์น๋ ๋ ์๋์ผ๋ก ์ฝ๋์ ์์กด์ฑ์ ์คํํ ์ ์๋๋ก ํ์ฉํด์ค์.
์ด ํน์ง์ ํธ๋ฆฌํ ๊ธฐ๋ฅ์ด์ง๋ง ์์ ์ฑ์ ์ํํ ์ ์์ด์.
ํนํ๋ ๋ณด์ฅ๋ ์ ์ฑ
์์ด ๋ฑ๋กํ ํจํค์ง๊ฐ ์กด์ฌํ ์ ์๋ค๋ ์ ์์ ๋์ฑ ์ํ๋๊ฐ ๋๋ค๊ณ ํฉ๋๋ค.
๋ฐ๋ฉด yarn์ yarn.lock์ด๋ package.json์ผ๋ก ๋ถํฐ ์ค์น๋ง ํ๋ฉฐ, yarn.lock์ ๋ชจ๋ ๋๋ฐ์ด์ค์ ๊ฐ์ ํจํค์ง๋ฅผ ์ค์นํ๋ ๊ฒ์ ๋ณด์ฅํ๊ธฐ ๋๋ฌธ์ ๋ฒ์ ์ ์ฐจ์ด๋ก ์ธํด ์๊ธฐ๋ ๋ฒ๊ทธ๋ฅผ ๋ฐฉ์งํด์ค ์ ์๋ค๊ณ ํฉ๋๋ค!
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ yarn.lock ํ์ผ์ ํญ์ yarn ์ด ์๋์ผ๋ก ๊ด๋ฆฌํ๋๋ก ํ๊ณ , ์ง์ ์์ ํ๋ ๊ฒ์ ์ข์ง ์์์. ๊ทธ๋ฆฌ๊ณ ํ์ ์์ ๋์ผํ ํ๊ฒฝ์์ ๋ํ๋์ ๊ด๋ฆฌ๋ฅผ ํ๊ธฐ ์ํด ๋ฒ์ ๊ด๋ฆฌ์๋ ํฌํจํด์ผ ๋ฉ๋๋ค!
ํ์ง๋ง yarn์๋ ๋จ์ ์ด ์์ด์. ๋ฐ๋ก ๋์คํฌ ์ฉ๋์ ๋ ๋ง์ด ์ฐจ์งํ๋ค๊ณ ํ๋๋ฐ์..
์ ๋ ๊ฐ์ธ์ ์ผ๋ก ๋์คํฌ ์ฉ๋์ธก๋ฉด์์ ์ด์ ์ ์ทจํ๊ธฐ ์ํด ์์์ ์๊ฐํ ์ธ๊ฐ์ง ์ด์ ์ ํฌ๊ธฐํ์ง๋ ์์ ๊ฒ ๊ฐ์์!
๊ทธ๋๋ ์๋ฌด๋ฆฌ yarn์ด npm์ ๋จ์ ์ ๋ณด์ํด์ ๋์๋ค๊ณ ํด๋, npm๋ ์ง์์ ์ผ๋ก ๊ฐ์ ๋ฒ์ ์ด ๋์ค๋ฉด์ ์ฌ์ค์ ์ง๊ธ์ ์ฑ๋ฅ์์๋ yarn๊ณผ npm์ ํฌ๊ฒ ์ฐจ์ด๋ ์๋ค๊ณ ํด์. npm์ด ์์กฐ๊ณ ์ญ์ฌ๋ ์ค๋๋์์ผ๋ ๋ฒ๋ฆฌ์ง๋ ๋ชปํ ๊ฒ ๊ฐ๋ค์.
๊ทธ๋์... ๋์ค์ ๋ญ์ฐ๋ฉด ๋๋๋ฐ!?
๐ ๊ฐ์ธ์ ์ ํธ๋๋ ์ํด์๋ ํ์ด ์ฌ์ฉํ๋ ํจํค์ง ๋งค๋์ ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๊ฒ ์ฃ !? ์ ๋ฆฌํ๋ค๋ณด๋ ๋๋ค ๋๊ฐ์๋ค~~ใ ใ
์ง๊ธ๊น์ง npm๊ณผ yarn์ ๋ํด ๊ณตํต์ ์ธ ๊ฐ๋ ๊ณผ ์ฐจ์ด์ ์ ํบ์๋ดค๋๋ฐ์!
๊ฐ๋ ๋ ์ค์ํ์ง๋ง ์ฐ๋ฆฌ๋ ์ธ ์ค ์์์ผํ์ฃ ~?
์ด์ ๋ถํฐ๋ npm๊ณผ yarn์์ ์ฃผ๋ก ์ฌ์ฉํ๋ ๋ช ๋ น์ด์ ๋ํด ๊ณต๋ถํด๋ณผ๊ฑฐ์์.
์ ๋ yarn์ ์ฌ์ฉํ๋ ๊ฐ๋ฐํ๊ฒฝ์ด๊ธฐ ๋๋ฌธ์ yarn์ ๋ช ๋ น์ด๋ฅผ ์ ๋ฆฌํ๊ณ npm์์ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ๊ฐ์ด ์จ๋๋ ค๊ณ ์!
# ์ค์น
# npm install
yarn install ๋๋ yarn
# ์ด๊ธฐํ
# npm init
yarn init
# ๋งํฌ
# npm link
yarn link
# ์คํ
# npm run
yarn run
# ์บ์ ์ ๋ฆฌ
# npm cache clean
yarn cache clean
# ๋ํ๋์ ์ถ๊ฐ (dev, production ํ๊ฒฝ์ ๋ชจ๋ ์ถ๊ฐ๋จ)
# ์ฌ๊ธฐ์ ๋งํ๋ ํ๊ฒฝ์ package.json์์
# devํ๊ฒฝ = devDependencies์ ๋ฑ๋ก๋๊ฒ
# productionํ๊ฒฝ = dependencies์ ๋ฑ๋ก๋๊ฒ
# npm i <package>@<version> --save
yarn add <package>@<version>
# devํ๊ฒฝ์๋ง ์ค์นํ ๋ํ๋์ ์ถ๊ฐ
# npm i <package> --save-dev
yarn add <package> --dev
# production ํ๊ฒฝ์๋ง ํ์ํ ๋ํ๋์ ์ถ๊ฐ
# npm i <package> --save-production
NODE_ENV=production yarn install ๋๋ yarn install --production
# ๊ธ๋ก๋ฒ ์ถ๊ฐ
# npm i <package> -g
yarn global add <package>
# ํจํค์ง ์ญ์
# npm uninstall <package> --save
yarn remove <package>
# package.json ์ ๋ช
์๋ version rule ์ ๋ฐ๋ผ ์ต์ ๋ฒ์ ์ผ๋ก ์
๊ทธ๋ ์ด๋.
# npm update --save
yarn upgrade
# ํน์ ํจํค์ง๋ฅผ ํน์ ๋ฒ์ ์ผ๋ก ์
๊ทธ๋ ์ด๋
# npm i <package>@<version>
yarn upgrade <package>@<version>
# ๋ชฉ๋กํ์์ interactive terminal ui ์ ๊ณต (yarn๋ง ํด๋น)
yarn upgrade-interactive
# CI ์๋ฒ์ ๊ฐ์ด ์ฌ์ ๊ฐ๋ฅํ ์์กด ํจํค์ง๊ฐ ํ์ํ ๊ฒฝ์ฐ --fronzen-lockfile ํ๋๊ทธ๋ฅผ ์ฌ์ฉ
# yarn.lock๊ณผ package.json์ด ๋๊ธฐํ ๋์ง ์์ ์ํ์์ ์
๋ฐ์ดํธ๊ฐ ํ์ํ ๊ฒฝ์ฐ์๋ ์ค์น๋ฅผ ์คํจํ๊ณ yarn.lock์ ์์ฑํ์ง ์์
yarn install --frozen-lockfile
๋ช ๋ น์ด๋ฅผ ๋ณด๋ฉด ์ค์น๋ ์ ๊ทธ๋ ์ด๋๋ฅผ ํ ๋ ํจํค์ง ๋ฒ์ ์ @ ์ด๊ฒ ๋ถ์๊ฒ ์์ฃ !
์ด๊ฑด ์ด๋ค ๋ฒ์ ์ ์ค์นํ ๊ฑด์ง ์ค์ ์ ํ๋ ๋ถ๋ถ์ด์์. ์๋์ ๋ฃฐ์ ๋ฐ๋ผ์์!
@ : ๋ช ์์ ์ธ ํน์ ๋ฒ์
~ : ์ตํ์๋ฒ์ ์ ์ ๋ฐ์ดํธ๋ง ํ์ฉ
^ : ์ต์์ ๋ฒ์ ์ ์ ๋ฐ์ดํธ๊น์ง ์์ ๋กญ๊ฒ ํ์ฉ
์ค๋์ yarn๊ณผ npm์ ๋ํ ๊ฐ๋จํ ๊ฐ๋ ๊ณผ ํน์ง์ ํบ์๋ณด๊ณ ์ฃผ๋ก ์ฌ์ฉํ๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ฆฌํด๋์๋๋ฐ์!
์ ๋ ์๋ฌด๋๋ ์ต์ํด์ง๊ธฐ ์ ๊น์ง๋ ์ข ์ข ์์ ์ฐธ๊ณ ๋ฅผ ๋ง์ด ํ ๊ฒ ๊ฐ์์!
๋ถ์กฑํ ์ ๋ฆฌ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค ๐ฅน ์๋ชป๋ ์ ์ด ์๋ค๋ฉด ๊ฐ๋ฅด์นจ๊ณผ ์ค์ง๋์ ์ธ์ ๋ ์ ๊ทนํ์์ ๋๋ค!
์ค๋๋ ๋๊ตฐ๊ฐ์๊ฒ ๋์์ด ๋์๊ธธ ๋ฐ๋์ ๐
์ฐธ๊ณ ์๋ฃ : npm vs yarn cheat sheet