package.json์ ๊ฑด๋๋ฆฌ์ง ์๊ณ ์์ฌ๋ฅผ ์ฌ์ฉํ์ฌ ํจํค์ง๋ฅผ ์ค์นํ ๊ฐ๋ฅ์ฑ์ด์๋ ๊ฒ ๊ฐ์ต๋๋ค. (์ : --save params์์ด npm ์ค์น). ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ฉด ์ ๋๋์?
์๋์,์ด ๊ธฐ๋ฅ์ ์๋์ ์ผ๋ก ์๋ต๋์์ต๋๋ค. package.json์ ๋ฐ์๋์ง ์๊ณ ํจํค์ง๋ฅผ ์ค์นํ๋ ๊ฒ์ ์ํํ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ์ ๊ทธ๋ฐ ๊ฒ์ด ์กด์ฌํ๊ธฐ๋ฅผ ์ํฉ๋๊น?
npm ์ค์น์ "๋ณด์ด์ง ์๋ ์ข ์์ฑ"๋์์ ์ ๊ฑฐํ์ต๋๋ค.
๋ช ๋ น์ ๋ถํ ํ์ญ์์ค. yarn add <name>
์คํ์npm install --save <name>
์คํ๊ณผ ๋์ผํฉ๋๋ค.
๋๋ ๊ทธ ๊ธฐ๋ฅ์ ํ
์คํธํ๊ธฐ ์ํด ๊ฝค ์์ฃผ ์ฌ์ฉํ์ต๋๋ค. ํนํ ๋ด๊ฐ ์ ์ง ๊ด๋ฆฌํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์์
ํ ๋ ๋ฆด๋ฆฌ์ค๋ฅผ ๋ง๋ค๊ธฐ ์ ์ ๋ณ๊ฒฝ ์ฌํญ์ ํ
์คํธํ๊ธฐ ์ํด ๋ก์ปฌ ๋ฒ์ ( file:
dep ์์ฑ)์ ์ค์นํด์ผํฉ๋๋ค.
npm์ ๊ตฌํ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ข์ง ์์ ์ ํ์ด๋ผ๋ ๋ฐ ๋์ํ์ง๋ง ๋ช ์ ์ ์ผ๋ก ์ฌ์ฉํ ๋ ์ ์ฉ ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ค, ๋ช
์ ์ ํ๋๊ทธ์ ํจ๊ป ํ ์ ์๋๋ก ํ์ฉํ๋ ๊ฒ์ด ์ข์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ํ์ฌ๋ก์๋ ์ฌ์ ํ npm i
=) ์ฌ์ฉํ ์ ์์ง๋ง npm ํ์๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํด์์
๋๋ค.
์ด์ ํ์์ ๋ณํ์๋ก ์ฐ๋ฆฌ๋ ๋ช
์ ์ ์ผ๋ก์ด ๊ธฐ๋ฅ์ ์ง์ํ์ง ์์ต๋๋ค node_module
์ดํ๋ก ๋ฆ์ ๊ฒ yarn install
์ฐ๋ฆฌ๊ฐ ๊ณ ๋ ค ์ดํ์ package.json
๋ฐ yarn.lock
๋ ์ ์ง์ค์ ๊ทผ์.
Windows (libxslt)์ ์ฝ๊ฒ ์ค์นํ ์์๋ ์ข ์์ฑ์ด ์์ผ๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์ฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊นจ๋ํ ๋ฐฉ๋ฒ์ด ์์ต๋๊น (๋๋์ด ๊ฒฐ๊ณผ๋ฅผ ์ป๋ ๋ ์ข์ ๋ฐฉ๋ฒ)?
(ํจํค์ง๊ฐ package.json์ ๋ฐ์๋์ด์ผํ๋ค๋ ๋ฐ ๋์ํ์ง๋ง ์ฌ๊ธฐ์์๋ ๊นจ๋ํ ์๋ฃจ์ ์ ์ฐพ์ ์ ์์ต๋๋ค)
@GuillaumeLeclerc yarn add -D xxx
๋ ์ด๋ป์ต๋๊น? package.json์์ ํญ๋ชฉ์ ์ง์ ์ ๊ฑฐํฉ๋๊น?
๋ค์์ ๋ค๋ฅธ ํจํค์ง๋ฅผ ์ถ๊ฐ ํ ๋ ์ ๊ฑฐ๋ฉ๋๊น? ๊ทธ๋ ์ง ์์ต๋๊น?
@GuillaumeLeclerc ๋ถํํ๋ ๊ทธ๋ ์ต๋๋ค.
@GuillaumeLeclerc ๋๊ธ์ ์ ๋ฆฌํ๊ณ ์ถ์ ์๋ ์์ต๋๋ค ...
package.json ๋๋ yarn.lock์ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ชจ๋์ ์ค์นํ ์ ์๋๋ก yarn add --no-save
์ ๊ฐ์ ์ธ์๋ฅผ ์ถ๊ฐํ์ญ์์ค. ๋๋ ์ข
์ข
๋ชจ๋์ ์ปค๋ฐํ๊ธฐ ์ ์ ํ
์คํธํด์ผํ๋ค๋ ๊ฒ์ ์๊ฒ๋ฉ๋๋ค.
"์ต๋ ํธ์ถ ์คํ ํฌ๊ธฐ๋ฅผ ์ด๊ณผํ์ต๋๋ค."๋ผ๋ ๋ฉ์์ง๊ฐ ํ์๋์ด ์ผ๋ฐ npm install
์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ค์ ์ค์นํ๋ ์ ์ผํ ์คํ ๊ฐ๋ฅํ ๋ฐฉ๋ฒ์
๋๋ค.
๋ณ๊ฒฝ ์ฌํญ์ package.json yarn.lock์ผ๋ก ๋ ๋๋ฆฌ์ง ๋ง์ญ์์ค!
๋๋ฅผ ์ํด ์ด๊ฒ์ peerDep์ ์ค์นํ๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์ ๋๋ฅผ ๋ฌผ๊ณ ์์ต๋๋ค. Yarn์ install
๋์ ํผ์ด deps๋ฅผ ์ค์นํ ๋ฐฉ๋ฒ์ด ์์ผ๋ฏ๋ก ์๋์ผ๋ก ์ํํด์ผํฉ๋๋ค. package.json / yarn.lock์ ์ถ๊ฐํ์ง ์์ผ๋ฉด yarn add <package>
ํ ์ ์์ต๋๋ค. ๋งํ์ด์.
@viveleroi ์ด๊ฒ์ ์์ ํ ์ ํํ๊ฒ ๋ค๋ฆฝ๋๋ค. package.json
์ถ๊ฐํ์ง ์๊ณ ํผ์ด ์ข
์์ฑ์ ์ค์นํ๋ ค๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
์ด ๋ณต์ ๋๋ฌธ์ @hpurmann ๋ด peerDependencies
์ dependencies
(๋๋ devDependencies
๋ด๊ฐ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ --dev
). ๊ทธ๊ฒ์ด ์๋ ๋ ๊ฒ์ด๋ผ๋ฉด ํ์คํ ์ง๊ด์ ์ด์ง ์์ต๋๋ค.
@hpurmann ๋ฐ์ ๊ตฌ์ฑ ์์๋ฅผ ๊ณต๊ฐํ๊ณ ์ถ์ผ๋ฏ๋ก react์ peerDep์ด์ด์ผํฉ๋๋ค. ํ์ง๋ง ๊ฐ๋ฐ์ ์ํด ๋ฆฌ ์กํธ๋ฅผ ํ๋ก์ ํธ์ ์ค์นํด์ผํฉ๋๋ค.
--no-save => ์ถ๊ฐํ๋ฉด ๋งค์ฐ ์ค์ํฉ๋๋ค.
ํน์ ํจํค์ง์ ๋ํ ํน์ ์ ํ์ ์ข
์์ฑ์ ๊ฑด๋ ๋ฐ์ด์ผํฉ๋๋ค. ๋๋ ๋น์ ์ ์ค๋ก ๊ทธ๊ฒ์ ํ ์ ์์ต๋๋ค. --no-save ์ต์
๊ณผ ํจ๊ป์์ ์ ์์ต๋๋ค.
yarn link local-pkg
๋ ํธ์คํธ ์ฑ์ local-pkg์ ์ข
์์ฑ์ ์ค์นํ์ง ์๊ธฐ ๋๋ฌธ์ ์ง์ ์ค์นํ๊ณ ์ถ์ง๋ง ๊ฒ์๋๋ฉด local-pkg์์ ๊ฐ์ ธ ์ค๋ฏ๋ก app package.json์ ์ ์ฅํ์ง ์์ต๋๋ค. .
๋๋ ์์ ์๊ฐ ์ด๊ฒ์ ๋ํด ๊ทธ๋ ๊ฒ ์๊ฒฌ์ด์๋ ์ด์ ๋ฅผ ์ดํดํ์ง ๋ชปํ๋ค. ์ฌ์ฉ๋ฒ์ด ๋ณด์ด์ง ์๋๋ค๊ณ ํด์ ์๋ฌด๊ฒ๋ ์๋ค๋ ์๋ฏธ๋ ์๋๋๋ค. ๋๋ ์ฌ๋๋ค์ด ๊ทธ๊ฒ์ ์๊ตฌํ๋ค๋ฉด ๊ทธ๊ฒ์ ๊ทธ๋ค์ด ๊ทธ๊ฒ์ ํ์๋กํ๋ค๋ ๊ฒ์ ์๋ฏธํ๊ณ ๊ทธ๋ค์ ๋ฐ๋์ ์ด๋ฆฌ์์ ๊ฒ์ด ์๋๋ผ๊ณ ๋ฏฟ์ต๋๋ค.
์ ํ์ --no-save
์ต์
์ ์ถ๊ฐํ๋ฉด ์ผ๋ถ ์ฌ๋๋ค์ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๊ณ ์ ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
AWS Lambda์์ ์คํ๋๋ NodeJS ํ๋ก์ ํธ์ Yarn์ ์ฌ์ฉํ๋ ค๊ณ ํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ด ์ง์๋์ง ์๋ ์ด์ ์ ๋๋์ต๋๋ค. ๋ด ์ฌ์ฉ ์ฌ๋ก๋ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ aws-sdk๋ฅผ ์ค์นํด์ผํ์ง๋ง AWS Lambda๊ฐ ์ด๋ฏธ ํด๋น ํ๊ฒฝ์ ์ค์น๋์ด ์์ผ๋ฏ๋ก package.json
์ ์ฅํ๊ณ ์ถ์ง ์์ต๋๋ค. aws-sdk๋ฅผ ํฌํจํ๋ฉด ์ต์ข
ํจํค์ง๊ฐ ๋น๋ํด์ง ๊ฒ์
๋๋ค.
์์ฌ ๋งํฌ์ ์์ฌ ์ถ๊ฐ๋ ํจ๊ป ์ด ์ ์์ต๋๋ค. yarn add๋ package.json์ ์์กดํ๋ ๋ฐ๋ฉด yarn link๋ ๋ก์ปฌ ํจํค์ง๋ฅผ ๋ค๋ฅธ ์์น๋ก ์ฐ๊ฒฐํฉ๋๋ค.
Y์ ์์กดํ๋ ํจํค์ง X๋ฅผ ๊ฐ๋ฐํ๊ณ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ฌ๋ฌ๋ถ์ X์ Y์ ๊ฐ๋ฐ์์ด๋ฏ๋ก X์ Y๋ฅผ ๋ก์ปฌ๋ก ์ ์งํ๊ณ Y๋ฅผ X์ ๋๋ ํ ๋ฆฌ์ ์ฐ๊ฒฐํฉ๋๋ค. Y์ ๋ํ ๋งํฌ.
์ด ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํฉ๋๊น?
~์ด ๊ฒฝ์ฐ npm-commands๋ฅผ ์ฌ์ฉํ์ฌ json ๋๋ yarn.lock ํจํค์ง์ ํ ํ๋ฆฐํธ๋ฅผ ๋ง๋ค์ง ์๊ณ ๊ฐ๋จํ ์ค์นํ ์ ์์ต๋๋ค.
~ npm install [packages ...] --no-save --no-package-lock
~
@heikomat์ด ์๋์ ์ธ๊ธํ๋ฏ์ด npm5๋ ์ค์น ํ ์๋ ์ ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ (https://github.com/npm/npm/issues/16853 + https://github.com/npm/npm/pull/18921 ์ฐธ์กฐ) ์ด๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ต์ ์ด ์๋๋ฉฐ node_modules-folder๋ฅผ ์์ ํ ๊นจ๋จ๋ฆด ์ ์์ต๋๋ค.
๊ทธ๋ ์ด์ npm ์์ด๋ ์ด ์ ์์ด
๊ธฐ๋ณธ node_modules์ ๋ก์ปฌ ํ์ ๋ชจ๋์ ์ข
์์ฑ์ ์ค์นํ๋ ์คํฌ๋ฆฝํธ ์ค ํ๋์์ npm install
์ ์ฌ์ฉํ์ต๋๋ค. ์ด๊ฒ์ npm4์์ ์ ์๋ํ์ง๋ง npm5๊ฐ ์ค์น ์ค์ ์ผ๋ถ ํจํค์ง๋ฅผ ํต์ผ๋ก ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์ npm5์์๋ ์์ ํ ์์๋์์ต๋๋ค -.- (https://github.com/npm/npm/pull/18921 ์ฐธ์กฐ)
๊ทธ๋ฐ ์ด์ ๋ก ๋๋ ๋ด ์คํฌ๋ฆฝํธ์ npm install
๋ฅผ yarn์ผ๋ก ๋ฐ๊พธ๋ ค๊ณ ํ์ง๋ง, yarn์ด ์ค์นํ๋ ๋์ ํญ์ ๋ก์ปฌ ํ์ ๋ชจ๋์ package.jsons๋ฅผ ๊ฑด ๋๋ฆฌ๋ฉด ์ค์ ๋ก ๊ทธ๋ ๊ฒ ํ ์ ์์ต๋๋ค. ๋ด ์คํฌ๋ฆฝํธ๊ฐ ์กฐ์ฉํ ์ง์ ๋ถ ํด์ง๊ณ ์ค ํ "์ ๋ฆฌ"๋ฉ๋๋ค.
์ด๋ฏธ --no-lockfile
์ต์
์ด ์์ผ๋ฏ๋ก node_modules ํด๋๋ฅผ ์๊ฐํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๊ฐ๋ฐ์๋ package.json์ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ๊ฒ ์ ์งํ๊ธฐ์ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์ฌ์ ํ ํ์ํฉ๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
๋๊ตฐ๊ฐ๊ฐ ๋ชจ๋ ์ค์น์ ๋ํ ๋
ํนํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ค๋ช
ํ์ง๋ง ๊ธฐ๋กํ์ง ์์ ๋๋ง๋ค ๊ด๋ฆฌ์๊ฐ ๋ค์ ์์ ์๋ณด๋ ๋ฅผ ์์กํ๋ ๋ฐฉ์์ด ๋ง์์ ๋ญ๋๋ค. ๋๋์ ์คํจ๋ก ๊ณ ํต๋ฐ๋ ์ฌ๋๋ค๋ก๋ถํฐ ์ค๋ ๊ฒ๊ณผ ๊ฐ์ ๋ง์ ๋ค๋ฅธ ์ฌ๋๋ค์ ์์ฒญ์ ๋ฐ์ ๋ค์ผ ์ ์๋ค๋ฉด ๋น์ ์ ๊ณ ์ง์ ๋ํ ์์ ๊ฐ์ ์ฝ๊ฒ ๋๋ ์ ์์ด์ผํฉ๋๋ค. ์ ์ถฉ์์ผ๋ก ์ค์์น ์ด๋ฆ์ --i-am-a-heritic-and-a-bad-programmer
?
yarn
๊ฐ npm
์์ ๋ณด์กดํ๋ ํ ๊ฐ์ง ์ฃผ์ ๊ฒฐํจ์ ๋ณด๋ฉด ์ํ๊น๊ฒ๋ ์กฐ์ง ์ธ๋ถ์ ๋ชจ๋ ์ฌ๋์ ๋ํ ์ ๋๊ฐ์ด ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ๊ฒฝ์ฐ์๋ # 4297 ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉํ๊ณ ์ถ์์ต๋๋ค. :)
๊ฐ๋ฐ์๊ฐ ์ผ์ํ๋๋ก ์ธ์์ ์ผ๋ก ์ ํํ๋ฉด ํน์ ์ํฉ์์ ์ ํ์ ์ฌ์ฉํ ์ ์๊ฒ ๋ ์ ์์ต๋๋ค.
์ฅ๋ ํด? ์ด๊ฒ์ ํฌํ์ ๋๋ค. ๋ชจ๋ ๊ฐ๋ฐ์ ์ํฌ ํ๋ก๊ฐ ์ด๋ป๊ฒ ์๋ํด์ผํ๋์ง ์ง์ํ์ง ๋ง์ธ์. ์ด๊ฒ์ด ๋ฐ๋ก NPM์ด ์ฐ๋ฆฌ์๊ฒ ์ ํฉํ์ง ์์ ์ด์ ์ด๋ฉฐ ์ฐ๋ฆฌ๋ Yarn์ผ๋ก ์ฎ๊ฒผ์ต๋๋ค. "package.json๊ณผ yarn.lock์ ์ง์ค์ ๊ทผ์์ด์ด์ผํ๋ค"๋ ์ด๋ ์ ๋ง๋ ์๋ฉ๋๋ค. ํจํค์ง๋ ์์ค ์ฝ๋๋ฅผ ์์ ํ์ง ์๊ณ ์ค์นํ ์ ์์ด์ผํฉ๋๋ค. ๊ทธ๋ ๊ฒ ๊ฐ๋จํฉ๋๋ค.
์ด์, ๊ด๋ฆฌ์. ์ปค๋ฎค๋ํฐ์์์ด๋ฅผ ์ค์ ๋ก ํ์๋กํ๋ ๊ฒ์ ๋ถ๋ช ํฉ๋๋ค. ํํฐ๋ง๋์ง ์๊ณ ์๋ชป ๋ฐฐ์น ๋ ์ฒ ํ์ผ๋ก ์ง์ ์ธ ๋ํ๋ฅผ ์ค๋จํ์ง ๋ง์ญ์์ค.
์ง๊ธ์ ์ฐพ๋ yarn
๋ด๊ฐ ํ
์คํธ ํ ํ์๊ฐ ์ด๋ ๋ชจ๋์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ํด์ ์๊ฐ ๋ด ํ
์คํธ๋ฅผ require
๋ด๊ฐ๋ก ์๋ฅผ ๋ค์ด ๋ชจ๋ ์ปค๋ฐ์ด ํ์ํ๊ณ ์์๋๋ก ์ํ์๋ฅผ ./node_modules
. Yarn์ yarn install
์คํํ ๋ ์์ ๋ชจ๋์ ์ญ์ ํฉ๋๋ค. ๋๋ ๋ ๋ง์ "์ง์ค์ ๊ทผ์"pedantry๋ฅผ ์๊ฐํ๋ค.
์ฌ์ฉ ์ฌ๋ก : ๋ด๊ฐ ์ฌ์ฉํ๋ ๋๊ตฌ์๋ ํจํค์ง๊ฐ ํ์ํฉ๋๋ค. ํ์์ด ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ํ (๋น์ฐํ)์ ํด๋น ํจํค์ง๊ฐ ์ค์น๋๋ ๊ฒ์ ์ํ์ง ์์ต๋๋ค.
์ด๊ฒ์ ์ต๊ทค๋ฌ ์คํ์ผ ๊ฐ์ด๋์ codelyzer๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋งค์ฐ ์ค๋ง ์ค๋ฝ์ง๋ง ๋๋จธ์ง ํ์ ์ฝ๋ ๊ธฐ๋ฅ์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค. ์ง๊ธ ์๋ํ๋๋กํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ์ค ์๋ฌผ์ ์ ์ถ๊ฐํ๊ณ ์ค ์๋ฌผ์ ๊ฐ ์ค์ ๋ก ๋ณ๊ฒฝ๋์ง ์์๋ค๊ณ ๊ฐ์ ํ๊ฑฐ๋ ํ์ด ์ค์ ์ฌ์ฉํ๋๋ผ๋ npm์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ๋ ๋ค ๋์ฐํ ์ต์ ์ ๋๋ค.
์ด๋ฏธ 2018 ๋ ์ด์ง๋ง ์ ํจํ ์๋ง์ ์ฌ์ฉ ์ฌ๋ก์๋ ๋ถ๊ตฌํ๊ณ ์ด ๊ธฐ๋ฅ์ ์์ง ์ถ๊ฐ๋์ง ์์์ต๋๋ค.
์ด๊ฒ์ด ์ ์ ์ฉํ ์ง ๋ ๋ค๋ฅธ ์๋ฅผ ๋ค์๋ฉด :
์ ๋ฒ์ ์ ์ค์นํ๊ณ ํ
์คํธ๋ฅผ ์คํ ํ ๋ค์ package.json
/ *.lock
ํ๊ณ ํด๋น ๋ณ๊ฒฝ ์ฌํญ์ ์ปค๋ฐํ๊ฑฐ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๋กค๋ฐฑํ์ฌ ์ข
์์ฑ์ ์๋์ผ๋ก ์
๋ฐ์ดํธํ๋ ์คํฌ๋ฆฝํธ๊ฐ ์์ต๋๋ค. ์ด์ ๋ฒ์ ์ ๊ธฐ์ตํ๊ณ ๋ค์ ๋ช
์ ์ ์ผ๋ก adding
๋ฅผ ๊ธฐ์ตํ๋ ๋์ yarn
๋ค์ ์คํํ๋ ๊ฒ์ด ๋ ์ฝ์ต๋๋ค.
๋ํ ํ
์คํธ๋ฅผ ์ค๋จํ์ง ์๊ณ ์ด ์ข
์์ฑ์ ์ค์ ๋ก ์
๋ฐ์ดํธ ํ ์ ์๋์ง "์ ๋์ ์ผ๋ก"ํ์ธํ๊ธฐ ์ ์ ๋จ์ผ ์ง์ค ์ง์ ( package.json
)์ ๋ณ๊ฒฝํ์ง ์๋ ๊ฒ์ด ๋ ๊น๋ํฉ๋๋ค. ์ง๊ธ์ ์ฝ๋๋ฅผ ๊นจ๋ ์ข
์์ฑ์ด ํฌํจ ๋ package.json
(์์์ ์ผ์ง๋ผ๋)๋ก ๋๋ฉ๋๋ค.
์ด ๋ฌธ์ ์ ๋ํ ์ ํจํ ์ฌ์ฉ ์ฌ๋ก๊ฐ ๋ง์ด ์์ต๋๋ค. yarnpkg ๋ฉ์ธํ ์ด๋๋ PR์ด ์์ฑ๋๋ค๋ฉด ๊ธฐ๊บผ์ด ๋ฐ์ ๋ค์ผ๊น์?
์์ง์ด ํ๋ก์ ํธ์ ์ฐธ์ฌํ๊ณ ์๋ค๋ฉด @kittens๋ฅผ ํํฉ๋๋ค ...
๊ทธ๋์ package.json
์ scripts
์น์
์์ ๋ค์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
"scripts": {
"install-sneaky-package": "npm install -g sneaky-package && cp -r $(npm root -g)/sneaky-package ./node_modules/sneaky-package"
}
์์ฌ์ ๋ํ ๋์์ด ์๋ค๊ณ ์๊ฐํฉ๋๊น?
๋์์ด ์์ต๋๋ค. npm5๋ ๋ด ์ธ์์ฒ๋ผ ์ง์ ๋ถํฉ๋๋ค.
.bin ํด๋์ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋ณต์ฌํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค. ;)
๋์๊ฒ๋ chmod 444 package.json
๋ฐ yarn add XXXX --no-lockfile
์ ์ด๋ ๋ก์ปฌ ๊ฐ๋ฐ ๋ฐ ํ
์คํธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
์ถ๊ฐ๋ (์์ ๋) ๊ถํ ์ค๋ฅ๋ก ๋๋์ง๋ง ์ถ๊ฐ ๋ ๋ชจ๋์ ๋์ค์ node_modules์ ์กด์ฌํ๋ฉฐ ๋ก์ปฌ์ ์ค์น๋ ํผ์ด ์ข
์์ฑ์ผ๋ก ํ
์คํธ ํ ์ ์์ง๋ง package.json์๋ ์ ์ง๋์ง ์์ง๋ง ํผ์ด ์ข
์์ฑ์ผ๋ก ์ ์ง๋ฉ๋๋ค.
๋๋๋ก why-is-node-running
์ ๊ฐ์ ๋๋ฒ๊น
๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ผ์์ ์ผ๋ก ํ์ํฉ๋๋ค. ํ ๋ฒ๋ง ์ฌ์ฉํ๋ฉด ์ ๊ฑฐํ๊ณ ์ถ์ ๊ฒ์ด๊ณ --no-save
์ต์
์ ์ฌ์ฉํ๋ฉด ์ข
์์ฑ์ ์ค์ผ์ํฌ ์ํ์์ด ์ค์นํ๊ณ ์์ ์ ์์ต๋๋ค.
์ ๋ Lerna๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ํ๋ก์ ํธ๊ฐ ์ด๋ฏธ ์ด์ ๋จ๊ณ์์ ๋น๋๋๊ณ ์ํฐํฉํธ๊ฐ ์ ๋ฌ๋์์ผ๋ฏ๋ก ๊ฒ์ ๋จ๊ณ๋ฅผ ์ํด CI ๋จ๊ณ ์ค ํ๋์ _only_ Lerna๋ฅผ ์ค์นํ๊ณ ์ถ์ต๋๋ค. ์ด๊ฒ์ด ์ ํจํ ์๋๋ฆฌ์ค์ ๋๊น?
์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค๋ฉด ๋ช ๋จ๊ณ๋ฅผ ์ ์ฝ ํ ์ ์์ต๋๋ค.
๋ด node_modules
์ ์ด์จ๋ .gitignore์ ์์ต๋๋ค.
๋์ ์:
git clone external-package (needed for temp testing only)
yarn install
yarn link
๋ด ์๋ ์ ์ฅ์๋ก ๋์ ๊ฐ๊ธฐ
yarn link external-package
๋ค๋ง:
์๋ณธ ์ ์ฅ์ :
yarn install external-package --no-save
๋น๋ ํ์ดํ ๋ผ์ธ์ ์ผ๋ถ๋ก nsp๋ฅผ ์ค์นํ๊ณ ์คํํ์ฌ dependency-check.xml์ ๋ด ๋ณด๋ด์ผํฉ๋๋ค.
์ด ๊ฐ๋จํ ๋๊ตฌ ์ค์น๊ฐ ํจํค์ง ๋ชฉ๋ก์ ๋ฐ์๋์ด์ผํ๋ ์ด์ ๋ฅผ ์ ์ ์์ต๋๋ค. ํ๊ทธ๋ฅผ ํธ์ํ๊ธฐ ์ ์ ์์ ์ ์ทจ์ํ๊ธฐ ์ํด git checkout ${BRANCH_NAME}
๋ฅผ ์ํํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค.
๋๋ ์์ค๋ฅผ ์์ ํ๋ ค๋ ๊ฒ์ด ์๋๋๋ค. ๋๋ ์ํ์ง ์์ผ๋ฉฐ ๊ทธ๊ฒ์ ๋ด ์ฌ์ ์ด ์๋๋๋ค. ๊ทธ๊ฒ์ ๋ด ์กฐ์ง์ ๊ฐ๋ฐ ํ์ ๋ฌ๋ ค ์์ต๋๋ค. ์ถ์์ ์ธ ์ฒ ํ ๋๋ฌธ์ ์ ์ถ์ ์กฐ๊ธ ๋ ์ด๋ ต๊ฒ ๋ง๋ค๊ณ ๊ณ์ญ๋๋ค. ๋ฉ์ถฐ.
์ด ๋ฌธ์ ๊ฐ ์ข
๊ฒฐ ๋ ์ด์ ๋ ๋ฌด์์
๋๊น? --no-save
์ค์์น๊ฐ PR์ ์ถ๊ฐ ๋์์ต๋๊น?
์ข
์์ฑ์์ ๊ฐ์ ธ์จ ๋ชจ๋์ ๋ฒ์ ์ ๋ณ๊ฒฝํ๊ณ ์ถ์ ๋๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค๋ฅธ ๊ฐ๋ฐ ์์กด์ฑ์ ์ํด ๊ฐ์ ธ์จ @types/sinon
๋ ์ต๊ทผ์ ๋ด tsc๋ฅผ ๊นจ๋จ ๋ ธ์ต๋๋ค. ๋ด dev ์ข
์์ฑ์ @types/sinon
์ (๋ฅผ) ์ํ์ง ์์ง๋ง ๊ณ์ ์์
ํ ์ ์๋๋ก yarn add @types/[email protected] --no-save
๋ฒ์ ์ ์๋์ผ๋ก ๋ณ๊ฒฝํ๊ณ ์ถ์ต๋๋ค. ๋์ npm์ผ๋ก ๋ค์ ์ ํํฉ๋๋ค. ๋งค์ฐ ์ค๋ง ์ค๋ฝ์ต๋๋ค.
ํ๋ซํผ ๋ณ ๋ฐ์ด๋๋ฆฌ ์์ฒด๋ฅผ ํดํนํ๋ ํ๋ก๋์
์ ์ฉ ์ข
์์ฑ (์ฑ ์ญํ)์ด ์์ต๋๋ค. ๊ฐ๋ฐ ๋จธ์ ์์๋ ํ์ํ์ง ์์ต๋๋ค. yarn add ... --no-save
์ถ๊ฐํ๋ฉด package.json์ ์ํ์ ๋น ๋จ๋ฆฌ๋ ์คํฌ๋ฆฝํธ์์ด ๊น๋ํ๊ฒ ๋ฐฐํฌ ํ ์ ์์ต๋๋ค (ํนํ package.json์ ๊ฐ ์คํฌ๋ฆฝํธ ๋ ์ข
์์ฑ์ ๋ชฉ์ ์ ์ค๋ช
ํ๋ ์ฃผ์์ ๊ฐ์ง ์ ์๊ธฐ ๋๋ฌธ์).
cc @kittens @hpurmann
์ด ๋งค์ฐ ์ธ๊ธฐ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ฑฐ๋ ํด๊ฒฐ ๋๋๋ก ์ ๊ทธ์ญ์์ค. ์์์ ์ ๊ธฐ ๋ ๋ชจ๋ ๋นํ์ ๋ํด ๊ตฌ์ฒด์ ์ธ ๋ต๋ณ์ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ปค๋ฎค๋ํฐ๋์ด ๊ธฐ๋ฅ์ ์ ๊ณต ํ ์ค๋น๊ฐ๋์ด ์์ต๋๋ค. ์ด๋ฌํ ํ ์์ฒญ์ ์๋ฝ ํ ๊ฒ์ธ์ง ์๋ ค์ฃผ์ญ์์ค. ๊ฐ์ฌํฉ๋๋ค.
ํํ, ์์ง ๊ตฌํ๋์ง ์์, niiiiice
์ ๊ทธ๋ฐ ๊ฒ์ด ์กด์ฌํ๊ธฐ๋ฅผ ์ํฉ๋๊น?
์ฌ๋๋ค์ด JSX์ ๋ํด ์ฒ์์ ํ ํ๋ฆฟ๊ณผ ๋ก์ง์ ํผํฉํ์ ๋ ๋งํ๋ ๊ฒ๊ณผ ๋ ๊ฐ์์ต๋๋ค. ๊ฐ๋ฅํ๊ณ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋ค๋ฉด ์ฌ๋ฐ๋ฅธ ์ง๋ฌธ์ ์ ์ ๋๋๊ฐ? ๋๋ ๊ทธ๊ฒ์ด ํ๋๊ทธ๋ผ๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ ๊ธฐ๋ณธ ๋์์ด ์๋๋ฏ๋ก yarn์๊ฒ ๋ช ์ ์ ์ผ๋ก ๋งํ๊ณ ์์ต๋๋ค.
ํธ์ ๋ด์ ๊ฐ๊ธฐ
๋ฐ์์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ๋ฌ ํจํค์ง๊ฐ ์์ผ๋ฉฐ ์ด๋ค์ ์๋ก์ ๋ํ ํ์ ๋ชจ๋ ์ข
์์ฑ์ด ์์ต๋๋ค. ๊ทธ๋์ ์ ๋ react ๋ฐ react-dom์ peer-dep๋ก ์ฌ์ฉํ์ง๋ง ์ด๋ฌํ ํจํค์ง๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ๋น๋ํด์ผ ํ ๋ react ๋ฐ react-dom์ด ํ์ํฉ๋๋ค.
๋๋ ์ด๊ฒ์ด ํจํค์ง๋ฅผ dep๋ก ์ถ๊ฐํ์ง ์๊ณ ๋ก์ปฌ๋ก ์ค์นํ๋ ๋ฐ ์ ํฉํ ์ฌ์ฉ ์ฌ๋ก๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ด ํ๋ก์ ํธ์์ ๊ทธ๋ ๊ฒ ์ฌ์ํ ์ฉ๋๋ก npm์ ์ฌ์ฉํ๊ณ ์ถ์ง ์์ต๋๋ค.
--no-save
์ ์ ์ฌํ ๊ฒ์ ๊ธฐ๋ค๋ฆฌ๋ ๋ชจ๋ ์
๋ฐ์ดํธ.
๊ฐ๋ฐ์๊ฐ ๋ถ์์ฉ์ ์๊ณ ์๋ค๊ณ ๊ฐ์ ํ๋ฉด ์ปค๋ฎค๋ํฐ๊ฐ ์๊ตฌํ๋ฉด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ๋ฐ ์๋ฌด๋ฐ ํด๊ฐ์๋ ๊ฒ ๊ฐ์ต๋๋ค (์ ์ค์น๋ฅผ ์คํํ์๋ง์ ๋ก์ปฌ ํจํค์ง๊ฐ ์์ค ๋จ).
๊ฐ์ฌ
ํธ๋ฆฌํ ํธ๋ฆญ์ yarn add --dev pkg && yarn remove pkg
์
๋๋ค. ๊ฐ์ ์ผ์ํฉ๋๋ค. ์ ๊ธ ํ์ผ์ ์ด์ ๊ณผ ๋์ผํ๊ฒ ์ ์ง๋๋ฏ๋ก ๊ทธ๋๋ก ์ ์ง๋ฉ๋๋ค.
์ด๊ฒ์ @Legends๊ฐ ์ด์ ์ ์ธ๊ธํ์ง๋ง ๊ฐ์กฐ ํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
์ผ๋ถ ๊ฒฝ์ฐ์ ๋ํ ํ ๊ฐ์ง ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ณ๋์ ํด๋์ ํ์ํ ํจํค์ง๋ฅผ ์ค์นํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ์ถ๊ฐ๋์์ ์์น์ ํ์ํ ํจํค์ง๋ฅผ yarn link
ํ๋ ๊ฒ์
๋๋ค. ์ด์์ ์ด์ง๋ ์์ง๋ง ๋์์ด ๋ ์ ์์ต๋๋ค.
cd /third-party
yarn add foo
cd node_modules/foo
yarn link
cd /my-project
yarn link foo
@silentorb ํ์คํ ๊ฐ์น๊ฐ ์์ต๋๋ค, imho. add + remove
๋ npm์์ --no-save
๋๋ ์์
์
๋๋ค. ์์คํ
๋งํฌ๋ฅผ ์๋ง์ผ๋ก ๋ง๋ค์ง ์์ผ๋ฉฐ ์ ๊ธ ํ์ผ์ ๋์ ๋ฐฉ์์ผ๋ก ๊ฑด๋๋ฆฌ์ง ์์ต๋๋ค. ์ฆ, yarn remove
์ดํ์๋ ๋์ผํฉ๋๋ค.
ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ๊ทธ ์ผ์ํ๊ณ ์ถ๋ค๋ฉด ํ์คํ dirs, linking ๋ฑ์ ๋ง๋๋ ๊ฒ์ ๊ฐ ๊ธธ์ด ์๋๋๋ค.
์ด๋ค ๊ฒฝ์ฐ
์๋ฅผ ๋ค์ด? ํ์คํ ์ด์ํ ๊ฒ๋ค์?
ํธ์ ๋ด์ ๊ฐ๊ธฐ
๊ทธ๋ ๋ค๋ฉด ํผ์ด ์ข ์์ฑ์ด์๋ ํจํค์ง๋ฅผ ๊ฐ๋ฐํ๋ ๋ฐ ๊ถ์ฅ๋๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
์๋ฅผ ๋ค์ด React๊ฐ ๋ด ํจํค์ง์ peerDependency๋ก์๋ ๊ฒฝ์ฐ ๊ฐ์ ธ ์ค๊ธฐ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด devDependency๋ก ์ถ๊ฐํด์ผํฉ๋๊น?
https://github.com/airbnb/javascript/blob/master/packages/eslint-config-airbnb/package.json์ ๋ณด๋ฉด ๋๋ต์ '์'๋ผ๊ณ ์๊ฐํฉ๋๋ค.
@ 18steps ํ์ธ https://www.npmjs.com/install-peers
์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๋ช ๊ฐ์ง ์ํฉ์ด ์์ต๋๋ค.
CI ๋ผ์ดํ ์ฌ์ดํด์์์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ปค๋ฒ๋ฆฌ์ง ๋ฆฌํฌํฐ๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ํ์ง๋ง package.json
๋ก ๊ฐ์ ธ์ฌ ์ ์์ผ๋ฉฐ NPM
๊ฒ์์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
์ ์ฅํ๊ฑฐ๋ ์ ์ฅํ์ง ์์ ๊ฒฝ์ฐ์ด ์ ํ์ ๋๊ตฌ๊ฐ ์๋ ๊ฐ๋ฐ์ ์์ ์๊ฒ ๋ฌ๋ ค ์์ต๋๋ค.
์, ์ด๊ฒ์ ์ ์ง ๊ด๋ฆฌ์์ ๊ด์ ์์ ์ดํด ๋ณด๊ฒ ์ต๋๋ค. ์์งํ --no-save
์๋ฃจ์
์ ๋จ์ ์ ํ์คํ ๋ณผ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ๊ธฐ์ ์์ฃผ ์ฒ ์ ํ ์ค๋ช
์ ์ป์ง ๋ชปํ์ง๋ง ๊ฐ์ฒ ๋จ์๋ฅผ ๋ง๋ค๋ ค๊ณ ๋
ธ๋ ฅํ ๊ฒ์
๋๋ค. ๊ทธ๋ค์ด ๋๋ฅผ ๋ฐ๋ก ์ก์ ์์์ ๊ฒ์
๋๋ค. ์๋ง๋ ์ฐ๋ฆฌ๋ ํํ์ ์ฐพ์ ์์์ ๊ฒ์
๋๋ค. ํธ์ ๋ด์ ๊ฐ๊ธฐ
(์ฃ์กํฉ๋๋ค. ์๋ ํ ๊ฒ๋ณด๋ค ์ค๋๋์์ต๋๋ค.)
์ต์ ๋ ธ๋ ๋ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์ข ์์ฑ ๊ด๋ฆฌ๋ ์ฝ๊ฐ ํผ๋ ์ค๋ฝ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ์ค๋ณต ์ ๊ฑฐ ๋ฐ ์ฌํ ๊ฐ๋ฅํ ๋น๋์ ๊ฐ์ ๊ธฐ๋ฅ์ ํตํด ์์ ์ ์ธ ์๋ํ์ ์ผ์ ์์ค์ ์ ์ด ๋ฐ ์์ธก ๊ฐ๋ฅ์ฑ์ ๋ชจ๋ ์ ๊ณตํ๋ ์์คํ ์ ์ํฉ๋๋ค.
๋ณต์ก์ฑ์ ํ์
ํ๋ ค๋ฉด ๋ฌด์์ด ์ค์น๋์ด ์๊ณ ์ ์ค์น๋์๋์ง ์์์ผํ๋ฉฐ ๋ถ์ผ์น๋ฅผ ํด๊ฒฐํ๊ธฐ์ํ ๋จ์ผ ์์ค๊ฐ ํ์ํฉ๋๋ค. ๋ช
๋ฐฑํ ๊ฒ์ ๋งํ ์ํ์ด ์์ง๋ง node_modules
์์ฒด๋ ์ด๋ฌํ ์ญํ ์ค ํ๋๋ฅผ ์ํ ํ ์ ์์ต๋๋ค. ํธ๋๋ฒ์คํ๊ธฐ์๋ ๋๋ฌด ๋๋ฆฌ๊ณ , ์ ์กํ๊ธฐ์๋ ๋๋ฌด ํฌ๊ณ , ๋ฒ์ ์ ์ด์ ๋๋ฌด ์ธ๋ฐํ๋ฉฐ, '์'์ธก๋ฉด์ ์ธ์ฝ๋ฉ ํ ์ ์์ต๋๋ค. ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ package.json
๋ฐ yarn.lock
์๋ ์ด์ ์
๋๋ค.
Yarn์ ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ ํ๋ ์ก์ธ์ค๋ฅผ ์ ๊ณตํ์ฌ node_modules
์ ๋ณต์ก์ฑ์ ์บก์ํํฉ๋๋ค. ์บก์ํ๋ฅผ ์ค๋จํ์ง ์๊ฒ ๋ค๊ณ ์ฝ์ํ๋ฉด ์ค๋ณต ์ ๊ฑฐ ๋ฐ ์ฌํ ๊ฐ๋ฅํ ๋น๋์ ๊ฐ์ ํน์ ๋ณด์ฆ์ ๋ฐ๊ฒ๋ฉ๋๋ค. package.json
๋ฐ yarn.lock
ํด๋นํ๋ ๋ณ๊ฒฝ์์ด node_modules
์ ์ค์นํ๋ฉด ํด๋น ๋ณด์ฆ์ ์๊ฒ๋ฉ๋๋ค.
๊ฒ๋ค๊ฐ ์ด๊ฒ์ ๋ง์ ๊ฐ๋ฐ์๋ค์ด ๋ช ์ ์ ์ผ๋ก ์ธ์ํ์ง ๋ชปํ๋ ๋ฌด์ธ์ ๊ณ์ฝ์ ๋๋ค. ๊ทธ๋ค์ด ๊ทธ๊ฒ์ ๊นจ๋จ๋ฆด ๋ ๊ทธ๋ค์ ๊ณ ์์ ์ผ๋ก ๊ทธ๋ ๊ฒํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์ผ์ด ์๋ชป๋๋ฉด Yarn์ด ๋ถ๋นํ๊ฒ ๋น๋๋ฐ์ ์ ์์ต๋๋ค. ๋ํ ๋ฐ๋ก ์๊ธฐ ์ด๋ ค์ด ๋๊ตฌ๋ฅผ ๋ง๋๋ ๊ฒ์ ๋์ ๋์์ธ ์ฒ ํ์ด ์๋๋๋ค.
๊ทธ๋ฌ๋ ํํํด์ผํ๋ ๋ช ๊ฐ์ง ์ด์ ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์ ๋ถ๋ช ํ ํ์๊ฐ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์์ ์ฃผ์์ ๋์ด๋ ๋ง์ ์ฌ์ฉ ์ฌ๋ก์ '์ข์์'/ '์ซ์ด์'๋น์จ์ ์ดํด๋ณด์ธ์. ์ด๋ฌํ ์ผ๋ฐฉ์ ์ธ ๋ฐ์์ ์ง๋ฉด ํ ๊ด๋ฆฌ์์ ๋ช ๋ฐฑํ ๊ณ ์ง์ Yarn์ ๋๋ฌด ์ข์ ๋ณด์ด๊ฒํ์ง ์์ต๋๋ค.
๋ชจ๋์๊ฒ ํจ๊ณผ๊ฐ์์ ์์๋ ํด๊ฒฐ์ฑ
์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ ํ์ผ yarn.local.lock
. ๊ฐ๋ฐ์๋์ด๋ฅผ .gitignore
์ ๋ฃ๊ณ --no-save
ํ๋๊ทธ์ ํด๋น ์ข
์์ฑ์ผ๋ก ์ค์น๋ ๋ชจ๋ ํจํค์ง์ ๊ธฐ๋ก์ ์ ์งํฉ๋๋ค.
yarn.lock
์ ์ด๋ก๋ถํฐ ๊ฒฉ๋ฆฌํ๊ธฐ ์ํด '๋ก์ปฌ'์ข
์์ฑ ํธ๋ฆฌ์ ์ค๋ณต ์ ๊ฑฐ ๋ฐ ํ๋ฉดํ๊ฐ ์ ํ๋ฉ๋๋ค. ๋ก์ปฌ ์ ๊ธ ํ์ผ์ ๊ธฐ๋ณธ ์ ๊ธ ํ์ผ์ ๋ฒ์ ๊ณผ ์ผ์นํ๋๋ก ์กฐ์ ๋ ์ ์์ง๋ง (์ด ๊ฒฝ์ฐ ์ค๋ณต ์ ๊ฑฐ) ๊ทธ ๋ฐ๋๋ ์๋๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ง์ ์ ์ด์ ๋ก์ปฌ ์ข
์์ฑ์ด node_modules
๋ก ํ๋ฉดํ๋์ง ์์ ์ ์์ต๋๋ค.
์ด ์๋ฃจ์
์ ํตํด Yarn์ ๋ชจ๋ ํจํค์ง๋ฅผ ๊ณ์ ์ถ์ ํ ์ ์์ผ๋ฉฐ ๊ฐ๋ฐ์๋ ์ ์ฅ์๋ฅผ ์ค์ผ์ํค์ง ์๊ณ ํญ๋ชฉ์ ์ค์นํ ์ ์์ผ๋ฉฐ ์ฌํ ๊ฐ๋ฅํ ๋น๋๋ฅผ ๋ณด์กด ํ ์ ์์ต๋๋ค. ( devDependencies
์น์
์ด์๋ package.local.json
๊ณต๊ฐ๋ ์์ง๋ง ํ์ ํญ๋ชฉ์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.)
์ฌ๋๋ค์ ์ด๋ฏธ ์ํ๋ ๊ฒ์ ์ป๊ธฐ ์ํด ์ด๋ฏธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๊ทธ ์ค ์ ์ด๋ ์ธ ๊ฐ์ง๋ ์์ ์ฃผ์์ ์ค๋ช ๋์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ค์ ์ฌ์ฉํ๊ธฐ๊ฐ ๋ถํธํ๊ณ ๋์ผํ ๋ณด์ฆ์ ์ ๊ณตํ์ง ์์ผ๋ฉฐ ๊ฐ๋ฐ์๊ฐ Yarn๊ณผ ์ธ์์ ์์๋ผ ๊ฒ์ ์๊ตฌํฉ๋๋ค. ๋ ์ธ๊ณ ๋ชจ๋ ์ต์ ์ ๋๋ค.
๋ญ๊ฐ ๋์ณค์ ์๋ ์์ง๋ง ์ด๊ฑด ๊ฐ์น์๋ ๋ํ ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๋ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค. REPL์์ ๋ชจ๋์ ์ฌ์ฉํ ์ ์๊ธฐ๋ฅผ ์ํ์ง๋ง ๋ด ์ฝ๋์์ ์ฌ์ฉํ ์๋๋ ์์ต๋๋ค. ํ์ฌ๋ก์๋ ๋ค๋ฅธ ํด๋๋ก ์ด๋ํ์ฌ ํด๋น ๋ชจ๋์ ์ค์น ํ ๋ค์ ../other-project/data/xyz.json
์ฌ์ฉํ์ฌ ์ผ๋ถ json ํ์ผ์ ๊ฐ์ ธ์์ผํฉ๋๋ค.
ํ์ง๋ง ๋ด๊ฐ ๋ชจ๋์ ๊ฐ์ ธ์ค๊ณ ์ถ๊ณ ๊ทธ๊ฒ ์๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ๋ชจ๋์ ๊ฐ์ ธ ์ค๋ฉด ๊นจ์ง ๊ฒ์ ๋๋ค.
์ ์ฅํ์ง ์๊ณ node_modules
๋ชจ๋์ ์ค์นํ๋ฉด ํจ์ฌ ์ฝ๊ฒ ํ ์ ์์ต๋๋ค.
๋๋ ๊ด๋ฆฌ์๋ค์ด์ด ์์ด๋์ด์ ์ผ๋ง๋ ์ ํญํ๋์ง ๋๋๋ค.
๋ง์์ฌ, ๋ฐฉ๊ธ ์ด์ ์๊ฒฌ์ ์ฝ์์ผ๋ฉฐ ์ ์ง ๋ณด์์ ํ๋๊ฐ ์ค๋ง ์ค๋ฝ์ต๋๋ค. ํ๋ ์ ์ํฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์ข ์์ฑ์ด์๋ ๋ง์ ํ๋ ์ ์ํฌ ํน์ ํ๋ฌ๊ทธ์ธ์ ๊ฐ๋ฐํ๊ณ ์ด๋ฌํ ํ๋ฌ๊ทธ์ธ์ ํ๋ ์ข ์์ฑ์ผ๋ก ์ถ๊ฐํ๋ ๊ฒ์ ํผํ๊ณ ์ถ์ต๋๋ค.
peerDependencies
์ ์ ๋ ํน์ ํจํค์ง์ ์์กดํ๋ ํ๋ฌ๊ทธ์ธ์ด ์์ต๋๋ค. ์ด์ ๋ค๋ฅธ ๋ง์ ์ฌ๋๋ค์ด ์ด๋ฏธ ์ธ๊ธ ํ ๊ฒ์ฒ๋ผ ๋ฌธ์ ๋ package.json
์ข
์์ฑ์ ์ถ๊ฐํ์ง ์๊ณ ๋ก์ปฌ๋ก ์ค์นํ๋ ๋ฐฉ๋ฒ์
๋๋ค. ํ์ผ? ๊ธ์, ๋น์ ์ ํ ์ ์์ต๋๋ค.
๋ด๊ฐ ์ฐพ์ ์ ์ผํ ํด๊ฒฐ์ฑ
์ peerDepencies
๋ฅผ devDependencies
ํ๋ ๊ฒ์
๋๋ค. ์ด๊ฒ์ ์ ํ ์ด์์ ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ง๋ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ๋์ฐํ ์ํ์ npm
์ package.json
ํ์ผ์ ์์ ํ์ง ์๊ณ ์ค์น๋ฉ๋๋ค.
ํธ์ ๋ด์ ๊ฐ๊ธฐ
์ปค๋ฎค๋ํฐ์ ๋ํ ์๋ต์ ํฌ๊ธฐ ํ์ต๋๊น? ๋ถ๋ช ํ์ด ๋ฌธ์ ๋ฅผ ๋ฌด์ํ๋ ๊ฒ์ ๋น์ ์๊ฒ ํธ์๋ฅผ ๋ฒ ํธ๋ ๊ฒ์ด ์๋๋ฉฐ ์ฌ๋ผ์ง์ง ์์ต๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ์์ ์ํ๊ณ PR์ ์ ์ถํ๋์ง์ ๋ํ ๊ฐ๋จํ ์ง๋ฌธ์ ๋๋ตํ์ง ์์ ๊ฒฝ์ฐ ์ด๊ฒ์ ์คํ ์์ค ํ๋ก์ ํธ๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ์ด ๋ฌด์จ ์์ฉ์ด ์์ต๋๊น?
๋๋ ์๋ง๋ @viveleroi๊ฐ ๊ทธ์ ์์ฃผ ์ ํจํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ค๋ช ํ ์งํ์ ํ์ด์ผ ํ๋ค. ๊ทธ ๋น์ ๋๋ ๊ทธ์ ๋๋ต์ ์์ง ์๊ฐ๋ฝ์ผ๋ก ์น์ผ ์ธ์ ๋๋ฐ, ๊ทธ๊ฒ์ ๋ถ๋ช ํ ์ฃผ๋ชฉ ๋ฐ๊ธฐ์ ์ถฉ๋ถํ์ง ์์์ต๋๋ค.
๋๋ ๋ง์์ ๋ฐ๊ฟจ๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฌ๋๋ค์ ๋ง์ ๊ฒ์ ์ํ๊ณ ์ ์ง ๊ด๋ฆฌ์๊ฐ ๋ชจ๋ ๊ธฐ๋ฅ์ ์์ฉํ๋ฉด ์ํํธ์จ์ด๊ฐ ๋ถํ์ด ์ค๋ฆ ๋๋ค. ์ด ์ ์ค ์ผ์ด์ค๋ ์์ง๋ง ๋ง์ ์ฌ๋๋ค์ด ์ํฉ๋๋ค.
๋๋ ์๋ฌด๊ฒ๋ ๊ฒฐ์ ํ ์ ์๋ค. ์ ๋์ด ํ๋ก์ ํธ์ ๊ด๋ฆฌ์๊ฐ ์๋๋๋ค.
@Vheissu yarn add --peer <dep>
์ ๋ฌธ์ ๋ ๋ฌด์์
๋๊น?
๋๋ฅผ ์ํด ์์ฌ ์ถ๊ฐ-ํผ์ด
์ค๋์ express๋ฅผ ์ฌ์ฉํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์ ๊ตฌํ์ ์์ฑํ๊ณ ์์ง๋ง ๋ด ์ฝ๋๋ express์ ์ง์ ์์กดํ์ง ์๊ธฐ ๋๋ฌธ์์ด ๊ธฐ๋ฅ์ ์ํฉ๋๋ค. Express๋ฅผ ์ค์นํ๊ฑฐ๋ ์์กดํ๋ ๊ฒ์ ์ํ์ง ์์ง๋ง ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์ค์นํ๊ณ ์ถ์ต๋๋ค.
@ brendan-hurley @suyanhanx ์ฒ๋ผ ๋ก์ปฌ์ด ์๋ CI์ ์ค์นํ๋ ค๋ ์ข
์์ฑ์ด ์์ต๋๋ค.
๋ก์ปฌ ์ข
์์ฑ์ ์ต์ํ์ผ๋ก ์ ์งํ์ฌ node_modules
์ (๋ฅผ) ๋ถํ๋ ค์ ํ๋ก์ ํธ์์ ์์
ํ๋ ๋ชจ๋ ๊ฐ๋ฐ์์๊ฒ ์๊ฐ๊ณผ ๊ณต๊ฐ์ ๋ญ๋นํ์ง ์๋๋กํ๊ณ ์ถ์ต๋๋ค.
CI์๋ ํ์ํ์ง๋ง ๋ก์ปฌ์ด ์๋ ํจํค์ง :
์ด ๊ธฐ๋ฅ์ด ํ์ํ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
yarn link
๋ฅผ ์ฌ์ฉํ๋ฉด ํจํค์ง์ ์ข
์์ฑ์ด ์ฐ๊ฒฐ๋์ง ์์ผ๋ฏ๋ก ๋ค์ ์์น์ ์ค์นํด์ผํฉ๋๋ค.
์ฐ๊ฒฐ๋ ๋์-์ด๋ฌํ ์ธ๋ถ ์ข
์์ฑ์ package.json
์ ์ถ๊ฐํ๋ฉด ๋๋ฌด ๋ถํธํฉ๋๋ค.
yarn link
๋ ์ข
์์ฑ์ ์ถ๊ฐํ๊ฑฐ๋ ๋์ package.json
์์ ์ ์ธํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํด์ผํฉ๋๋ค.
๊ฝค ๋ํดํ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ง๋ง ์ด๊ฒ์ ๋์๊ฒ ๋์์ด ๋ ๊ฒ์
๋๋ค. yarn.lock
๋ฐ package.json
์ด (๊ฐ) ์ง์ค์ ์์ฒ์ด๋๋ ๊ฒ์ด ์ ์ค์ํ์ง, ๊ทธ๋ฆฌ๊ณ --no-save
๋ช
๋ น์ ์ฌ์ฉํ๋ฉด ๋ณ๊ฒฝ ์ฌํญ์ด ํ์ yarn
์์ ์ง์์ง๋ค๋ ๊ฒ์ ์์ ํ ์ดํดํฉ๋๋ค.
์ฆ, yarn
๊ฐ ๋ด๊ฐํ๋ ์ผ์ ์๊ณ ์๋ค๊ณ ๋ฏฟ๊ณ --no-save
ํ๋๊ทธ๋ฅผ ์ ๋ฌํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ๋ฌด์์ด ์๋ชป๋์๋์ง ์ ํํ ์ ์ ์์ผ๋ฉฐ ์ฑ
์์ ์ ธ์ผํฉ๋๋ค. :๋ฏธ์:
๋ด ์ฌ์ฉ ์ฌ๋ก?
๋๋ 64 ๋นํธ ์ ๋จธ์ ์ ์คํํ๋ค.
Prod ๋จธ์ ์ 32 ๋นํธ์
๋๋ค.
ํจํค์ง๋ฅผ ์ ๋ฐ์ดํธํ์ง ์๋ ํ 32 ๋นํธ ๋ง ์ง์ํ๋ Node-sass ์ข ์์ฑ.
dev ์์คํ
์ ์ง์ํ๊ธฐ ์ํด package.json ๋๋ yarn.lock์ ์ข
์์ฑ์ ๋ณ๊ฒฝํ์ง ์์ต๋๋ค.
๋ฐ๋ผ์ 64 ๋นํธ๋ฅผ ์ง์ํ๊ธฐ ์ํด ์ต์ node-sass๋ฅผ ๋ก์ปฌ๋ก ์ค์นํ๊ณ ์ถ์ง๋ง package.json ๋ฐ yarn.lock์๋ ์ํฅ์์ฃผ์ง ์์ต๋๋ค.
VSCode์์ ๋ ๋์ ์๋ ์์ฑ์ ์ํด package.json
/ yarn.lock
๋ฅผ ์ค์ผ์ํค์ง ์๊ณ ๋น TypeScript ํ๋ก์ ํธ์ @types/*
ํจํค์ง๋ฅผ ์ค์นํ๊ณ ์ถ์ต๋๋ค.
๋๋ ์ค ์์
๊ณต๊ฐ๊ณผ ํจ๊ป lerna๋ฅผ ์ฌ์ฉํฉ๋๋ค.
@ types / [email protected] ์
๋ฐ์ดํธ๋ก ์ธํด Antd์ ์ ํ ์ ์๊ฐ ์ค๋จ๋ฉ๋๋ค.
Antd๋ ์ฃผ๋ง์์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
ํ์ง๋ง ์ง๊ธ์ ํ์ฌ package.json์ ์ํฅ์์ฃผ์ง ์๊ณ ์๋์ผ๋ก @ types / [email protected] ์ ๊ณ ์ ๋ฒ์ ์ workspaceRoot์ ์ค์นํ๋๋ก ์์ฌ๋ฅผ ๊ฐ์ ํด์ผํฉ๋๋ค (์ต์ ๋ฒ์ ์ ์๋์ผ๋ก ์ค์นํ๊ธฐ ๋๋ฌธ์).
package.json์ ์ ์ฅํ๋ ๊ธฐ๋ณธ ๋์์ ์ ์งํ๋ ๊ฒ์ ์ณ์ง ๋ง ์ค์ ๋ก๋ ๊ฐ๋ฐ์๊ฐ package.json์ ์ํฅ์์ฃผ์ง ์๊ณ ๋ชจ๋์ ์ค์นํด์ผํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ํนํ ์ผ๋ถ ํจํค์ง์ ์๊ธฐ์น ์์ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด์๋ ๊ฒฝ์ฐ.
์์ ์ ์ผ๋ก ํจํค์ง๋ฅผ ์ ๋ฐ์ดํธํ๊ณ ์์ ์ ์ผ๋ก package.json์ ์ ์ฅํ๋ฉด ์ถฉ๋์ด ๋ฐ์ํฉ๋๋ค.
์ฌ๊ธฐ ๋ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค. ์ ๋ React ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์งํ๊ณ ์์ต๋๋ค. ์ ๋ฒ์ ์ ๊ฒ์ํ๊ธฐ ์ ์ ์ฌ๋ฌ ๋ฒ์ ์ react
๋ฐ react-dom
์ ๋ํด ํ
์คํธ๋ฅผ ์คํํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ด ์ญ๋ฐฉํฅ ๋ฐ ์ ๋ฐฉํฅ ( @next
) ํธํ๋๋์ง ํ์ธํ๋ ค๊ณ ํฉ๋๋ค. ์๋ ์ค์ ์ ์ฌ์ฉํ์ฌ์ด ์์
์ ์ํํ์ง๋ง ์ด์ Yarn์ ์์
์์ญ์ ์ฌ์ฉํ๊ณ ์ถ์ผ๋ฏ๋ก Yarn์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์
ํด์ผํฉ๋๋ค.
"test:backwards": "npm i [email protected] [email protected] --no-save && npm test",
"test:forwards": "npm i react<strong i="9">@next</strong> react-dom<strong i="10">@next</strong> --no-save && npm test",
"test:latest": "npm i react<strong i="11">@latest</strong> react-dom<strong i="12">@latest</strong> --no-save && npm test",
"test:compat": "npm run test:backwards && npm run test:forwards && npm run test:latest"
์ด ์คํฌ๋ฆฝํธ๋ก package.json
๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ๊ฒ์ ๋ช
๋ น ( pack publish
)์ด ์ค๋น๋์ง ์์ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ์คํจํ๊ฒ๋ฉ๋๋ค.
package.json ํ์ผ์ ๊ฑด๋๋ฆฌ์ง ์๊ณ ํ
์คํธ ๋ชฉ์ ์ผ๋ก CI ํ์ดํ ๋ผ์ธ์ ์ถ๊ฐ ํจํค์ง๋ฅผ ์ถ๊ฐํ๊ณ ์ถ์ต๋๋ค (์ฝ๊ธฐ ์ ์ฉ ํ์ผ ๋ง์ดํธ ์ผ ์ ์์).
์ด๋ค์ ๊ฐ๋ฐ ๊ตฌ์ฑ ์์์ ์ผ๋ถ๊ฐ ์๋๋๋ค.
๊ฐ๋ฐ ๋จธ์ ์์ ๊ฐ๋ฐ ๋ฐ ํ
์คํธํ๋ ๋์์๋ ์ค์น๋์ง ์์์ผํ๋ฉฐ ๋น๋ ๋ฐ ์์ฐ ์ค์ ์ค์น๋์ง ์์์ผํฉ๋๋ค. ํ
์คํธ ์ค์๋ CI ์๋ฒ์์๋ง ํ์ํ๊ณ ํ์ฉ๋ฉ๋๋ค.
์ด๊ฒ์ npm์ ์ฌ์ฉํ์ฌ ์๋ํ์ง๋ง yarn์ npm์ ๋ํ ์์กด์ฑ์ ์ ๊ฑฐ ํ ์ ์์ด์ผํฉ๋๋ค.
์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์ค๋ง ์ฌ์ฉํ๋ ๋์ npm ๋ง ์ฌ์ฉํ๋๋ก ๋ค์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
๋ํ npm์ด ํ ์์๋ ์ผ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ npm์ ์์ ํ ๋์ฒด ํ ์ ์๋ค๋ ์ฝ์์ ๊นจ๋จ๋ฆฝ๋๋ค.
๋ํ์ด ๊ธฐ๋ฅ์ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋๋ผ ์ฃ์ง ์ฌ์ฉ ์ฌ๋ก ์ฌ์ผํ๊ธฐ ๋๋ฌธ์ ์ผ๋ถ ํ๋๊ทธ ๋ค์์ด ๊ธฐ๋ฅ์ ์ ๋์ ์ผ๋ก ์จ ๊น๋๋ค.
๋๋ด ํด? ๊ฐ๋จํ ์ค์์น๋ฅผ ์ถ๊ฐํ๋ ๋ฐ 3 ๋ ์ด ๊ฑธ๋ฆฌ๋์?
๋ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก : ์ฌ์ ์ปค๋ฐ ํ์ธ์ ์ํด npm ํจํค์ง ( git-hoooks
)๋ฅผ ์ฌ์ฉํฉ๋๋ค. ํ์ ๋ชจ๋ ์ฌ๋์ด ๋
ธ๋๋ฅผ ์ค์นํ์ง ์์์ผ๋ฏ๋ก package.json์ ํฌํจํ๋ฉด ์ผ๋ถ ์ฌ์ฉ์์ ์ปค๋ฐ์ด ์ค๋จ๋ฉ๋๋ค. ๊ทธ๋์ git-hooks๋ฅผ ์ค์น / ์ ๊ฑฐํ์ฌ ์ผ์์ ์ผ๋ก ํํฌ๋ฅผ ํ์ฑํ / ๋นํ์ฑํํ๋ npm ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค๋ ค๊ณ ํฉ๋๋ค. ๊ฒ๋ณด๊ธฐ์ ๊ฐ๋จํ๊ณ ์ฌ์ด ์์
์ด ์ค๋ก ๊ฑฐ์ ๋ถ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์๊ฒ๋์ด ๋งค์ฐ ์ค๋งํ์ต๋๋ค.
yarn.lock์ด ๋ ์ด์ node_modules์ ๋ด์ฉ์ ๋ํ ์ง์ค์ ์์ฒ์ด๋์ง ์์ ๊ฒ์ด๋ผ๋ ์ ์ด ๊ฑฑ์ ๋๋ค๋ฉด, ๋ญ๊ฐ ๊ทธ๋ ๊ฒ ๋์ ๊น์? ๊ธฐ์กด ํจ์๊ฐ ์ถ์ ๋์ง ์์ ์ข ์์ฑ์ ์กด์ฌ๋ฅผ ๋จ์ํ ๋ฌด์ํ ์ ์์์ต๋๊น? Yarn์ ํ๋ฅญํ ๋๊ตฌ์ด๋ฉฐ ๋ฉ์ธํ ์ด๋๋ JS ์ปค๋ฎค๋ํฐ์ ํ๋ฅญํ ์๋น์ค๋ฅผ ์ ๊ณตํ์ง๋ง์ด ๊ฒฐ์ ์ ์ฌ๊ณ ํด์ผํฉ๋๋ค.
๋๋ด ํด? ๊ฐ๋จํ ์ค์์น๋ฅผ ์ถ๊ฐํ๋ ๋ฐ 3 ๋ ์ด ๊ฑธ๋ฆฌ๋์?
@spanasik ๋ฐ @Ryuurock : ๋ฌด๋ฃ๋ก ์ ๊ณต๋๋ ๊ณ ํ์ง ์ํํธ์จ์ด์ ๋ํด ๋ ผ์ ํ ๋ ์์๋ฅผ
์ค์์น๋ ๊ตฌํํ๊ธฐ๊ฐ ๋๋ฌด ๋ณต์กํ๊ธฐ ๋๋ฌธ์ "3 ๋ "์ด ๊ฑธ๋ฆฌ์ง ์์์ต๋๋ค. ์ด๋ ๊ด๋ฆฌ์๊ฐ ์ด๊ฒ์ด ์ฌ์ฉ์์๊ฒ ์์ด์ต์ด ๋ ๊ฒ์ด๋ผ๊ณ ํ์ ํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด์ ๋์ํ์ง ์๋ ๊ฒฝ์ฐ ๊ธฐ๋ฅ์ ๋ํ ์ฃผ์ฅ์ํ์ญ์์ค.
@NickHeiner ์ฌ๊ธฐ์ 10 ๊ฐ์ ์ธ์ ํ๋ฉด์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ข์ ๊ฐ์ ์ ๋ฐํ๋ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๋ฉ์ธํ ์ด๋๊ฐ ํ์ ํ์ง ๋ชปํ๋ ๊ฒ์ด ์๋๋ผ ๊ทธ๋ค์ด ๊ทธ๊ฒ์ ๋ฌด์ํ๊ณ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ฌ๋๋ค์ด "์ด์ ๋์ํ์ง ์๊ณ ๊ธฐ๋ฅ์ ๋ํด ๋ ผ์์ ํ ๋"๋ ผ์์ ์๋ตํ์ง ๋ง์ญ์์ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๋๋ค์ด ์ข์ ํ๋ฉด ๋น์ฐํ ๋ถ์พํ ๋ง์ ๋จ๊น๋๋ค. ์ฌ์ฉ์์๊ฒ ๋ชจ๋ ๊ฒ์ ํํ์ง ๋ง์ญ์์ค.
๋๋ ๋ฉ์ธํ ์ด๋๊ฐ ์ฌ๊ธฐ์ ๋ ผ์ํ๋ ๊ฒ์ด ๋ ๋์ ๊ฒ์ด๋ผ๋ ๋ฐ ๋์ํฉ๋๋ค. ์๋ ์ ๊ฑธ์ณ ๊ด๋ฒ์ํ ์ฌ๋๋ค์ ๊ด์ฌ์ด ๋ถ๋ช ํ ์์ต๋๋ค. ๊ทธ๋์ ์๋ง๋ @spanasik ๊ณผ @Ryuurock ์ด ๋จ์ง "
๊ทธ๋ฆฌ๊ณ ์ฌ๋๋ค์ด ์ข์ ํ๋ฉด ๋น์ฐํ ๋ถ์พํ ๋ง์ ๋จ๊น๋๋ค. ์ฌ์ฉ์์๊ฒ ๋ชจ๋ ๊ฒ์ ํํ์ง ๋ง์ญ์์ค.
๋์ํ์ง ์์ต๋๋ค. ์ด ๋ฌด๋ก ํจ์ ์ฌ์ ํ โโ์ ์ฉํ ์ง์ ์ด ์๋๋ฉฐ ์ฑ์ธ๋ค ์ฌ์ด์์ ์ฉ์ธ๋๋ ํ๋๋ ์๋๋๋ค. ๋ฌด๋กํ๋ค๋ ๊ฒ์ ๊ด๋ฆฌ์๊ฐ ์ด๊ฒ์ ๋ฌด์ํ๋ ๊ฒ์ ์ ๋นํํ๋ ์ข์ ๋ฐฉ๋ฒ์ ๋๋ค : "์ฐ๋ ๋๋ ๋จ์ง ํธ๋กค์ ๋๋ค".
๋ฐ์ ์์ํ ๊ฑด์ค์ ์ธ ๋ฐฉ๋ฒ :
ํธ๋ฆฌํ ํธ๋ฆญ์
yarn add --dev pkg && yarn remove pkg
์ ๋๋ค. ๊ฐ์ ์ผ์ํฉ๋๋ค. ์ ๊ธ ํ์ผ์ ์ด์ ๊ณผ ๋์ผํ๊ฒ ์ ์ง๋๋ฏ๋ก ๊ทธ๋๋ก ์ ์ง๋ฉ๋๋ค.
ํ ์คํธ ๋จ-์๋ํ์ง ์์ต๋๋ค.
๋ด ์ฌ์ฉ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ผ๋ถ ํจํค์ง์๋ 'require'๋ก๋ก๋๋๋ ์ ํ์ ์ถ๊ฐ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ์ด๋ฌํ ์ถ๊ฐ ๊ธฐ๋ฅ์ devDependencies ์น์
์ ์ถ๊ฐํ๊ณ ์ถ์ง ์๊ธฐ ๋๋ฌธ์ 'yarn add my-add-in'์ ์ํํ๊ณ package.json ํ์ผ์์ ์๋์ผ๋ก ์ ๊ฑฐํฉ๋๋ค. ๋ด ํด๋ผ์ฐ๋ CI ํ์ดํ ๋ผ์ธ์์ 'npm i'๋ฅผ ์ฌ์ฉํ์ฌ ์ถ๊ฐํฉ๋๋ค (ํ
์คํธ ์ฉ). ๋ด ๋ก์ปฌ ํ์ดํ ๋ผ์ธ์์ ์ถ๊ฐ ์ ๊ธ ํ์ผ์ ์์ฑํ๊ธฐ ๋๋ฌธ์ npm์ ์ฌ์ฉํ๊ณ ์ถ์ง ์์ต๋๋ค. ์ด์ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ npm์ ์ฌ์ฉํ ๋ค์ ์ ๊ธ ํ์ผ์ ์ญ์ ํ๋ ๊ฒ์
๋๋ค (์ง์ค์ ๋ ๋ฒ์งธ ๋ฒ์ ์ ์ ๊ฑฐํ๊ธฐ ์ํด).
๊ทธ๋์ ๋ชจ๋ ๊ฒ์ ์ฝ์ ํ ๊ด๋ฆฌ์์๊ฒ ๋ด ์ง๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ถ์ธํ ์์๋ ์ฌ์ค์ ์ข์ ์ํํธ์จ์ด๋ ์ฌ์ฉ์๊ฐ ์์ ์ ์ํฉ์ ๊ฐ์ฅ ์ ํฉํ ๊ฒ์ ์ ํํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์ข์ ์ํํธ์จ์ด์๋ ๊ตฌ์ฑ ์ค์ ์ด ์๋ค๋
๊ฐ๋จํ๊ณ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ ์ค์ ์ ๋ง ์ข์ ํฉ๋๋ค. ์ปค๋ฎค๋ํฐ๊ฐ ์ผ์ ์๋์ํค๊ธฐ ์ํด ๋๋ฆฌ๊ฒ ์ ๋ขฐํ ์์๋ npm์ผ๋ก ๋๋๋ ค ์ผํ๊ธฐ ๋๋ฌธ์ ๊ด๋ฆฌ์๊ฐ ํ์คํ ํ์ด์ผ ํ ์ ํฌ์ ๋ง์ ์ธ์ฐ๋ ๊ฒ์ ์ ๋ง ๋ถํํ ์ผ์ ๋๋ค.
์จ๋๋ฅผ ์กฐ๊ธ ๋ฎ์ถ์. ์๋ฌด๋ ํ์ค๊ฐ์ ๋๋ ํ์๊ฐ ์์ต๋๋ค.
๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์์๋ ์ํํธ์จ์ด์
๋๋ค.
On Wed, Jan 15, 2020 at 23:17 Hajime Yamasaki Vukelic <
[email protected]> ์์ฑ :
์ค์ด ๋๋ฅผ ํน์ ๋ฐฉ์์ผ๋ก ์ผํ๊ฒ ๋ง๋๋ ๊ฒ์ด ์ญ๊ฒน๋ค. ๋๋
์ค์ค๋ก ๊ฒฐ์ ํ๊ณ , ๋ด ๋๊ตฌ๊ฐ ์ด๋ป๊ฒ
์๋ํด์ผํ๊ณ , ๋ด ์ง๋ฅ์ด ๋ฌธ์ ์ค ๊ฐ์ฅ ์ ๋ค๊ณ ๋ชจ์ํด์ผํฉ๋๋ค.
์ผ์ ์์ ํ ์ ์๋ค๋ ๊ฒ์ด ๊ฐ์ฅ ํฐ ๊ฒ์ ๋๋ค.์๋ฒฝํ ๊ท์น์ ๋ฏฟ๊ณ ์ ๋๋ก
๊ทธ๋ค์ ๊นจ๋ ๊ฒ์ ์์งํฉ๋๋ค. "๋ชจ๋ฒ ์ฌ๋ก"์
"do-or-die". Oliver Wendell Holmes Sr.๋ ๋ค์๊ณผ ๊ฐ์ด ๋งํฉ๋๋ค.์ ์์ด๋ ๊ท์น์ ์๊ณ ์์ง๋ง ๋ ธ์ธ์ ์์ธ๋ฅผ ์๊ณ ์์ต๋๋ค.
โ
๋น์ ์ด ์ธ๊ธ ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๊ณ ์์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/yarnpkg/yarn/issues/1743?email_source=notifications&email_token=AAGKTAZRWD3XJQEGH5N5RL3Q6ACZNA5CNFSM4CVUKFMKYY3PNVWWK3TUL52HS4DFWSVREXG43ZLO17586 ,
๋๋ ๊ตฌ๋ ์ทจ์
https://github.com/notifications/unsubscribe-auth/AAGKTAZSB4FNAIFLZIL547LQ6ACZNANCNFSM4CVUKFMA
.
์์ ์ ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ๋ง๋์ญ์์ค. ์๋ฌด๋ ๋น์ ์ด ์๋ฌด๊ฒ๋ํ๋๋ก ๋ง๋ค์ง ์์ต๋๋ค.
์ ํ ํ๋ฅผ ๋ด์ง ์๊ณ ๋ ผ๋ฆฌ์ ์ค๋ฅ๋ฅผ ์ง์ ํ์ญ์์ค.
์ค์ ๋๋ฅผ ํน์ ํ ๋ฐฉ์์ผ๋ก ์ผํ๊ฒํฉ๋๋ค.
Yarn์ ๋น์ ์ด ์๋ฌด๊ฒ๋ํ๋๋ก ๋ง๋๋ ๊ฒ์ด ์๋๋๋ค. ๊ทธ๋ค์ ๋๊ตฌ (๋ฌด๋ฃ)๋ฅผ ๋ง๋ค์๊ณ ๊ทธ๊ฒ์ ํน์ ํ ๋ฐฉ์์ผ๋ก ์๋ํฉ๋๋ค. ๋ง์์ ๋ค์ง ์์ผ๋ฉด ๋ค๋ฅธ ๊ฒ์ ์ฌ์ฉํ์ญ์์ค.
@foxbunny ํ์ค๊ฐ์ ๋ช ํํ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. :)
์ด ๊ฒฝ์ฐ์ ํฉ๋ฆฌ์ ์ด๊ณ ํ์ค๊ฐ์ ๋๋ผ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ์๊ฐํ๋๋ผ๋ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์์๋ ๋๊ตฌ๋ฅผ ๋ง๋ ์ฌ๋๋ค์๊ฒ ์ธ์ด๊ฐ ์ ์คํ๊ฒ ์ด์ผ๊ธฐํ๋ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ์กด์คํ๋ฉด์ ๊ฑด์ค์ ์ธ ํผ๋๋ฐฑ์ ์ค ์ ์์ต๋๋ค.
@whitecolor ํ์ด ํฌ์ธํธ๋ฅผ ์ป์์ต๋๋ค. ๊ทธ ์ต์ --save๋ ์ด๋ฆฌ ์์ต๋๋ค. Yarn์ node_modules, package.json ๋ฐ ์ ๊ธ ํ์ผ ๊ฐ์ ํํ์ ๋ณด์ฅํฉ๋๋ค. ๋ ์์ ํฉ๋๋ค .... npm --save๋ ์ํํฉ๋๋ค. ์ฌ๋ฌ ๋ฒ ๋๋ฅผ ์ค๋ง ์์ผฐ์ด
์ ๋ฐ ๊ทธ๋งํด
์๋๋ฉด ๋ชจ๋๊ฐ ๋ ๋ซ๋ค๊ณ ์๊ฐํ๊ณ ์ง์ ๋๋ ๋ฐฉ์์ผ๋ก ์๋ํ๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น?
๋ด ์ฌ์ฉ ์ฌ๋ก๋
์ฑ์ ํ์ ์ข
์์ฑ์ ์
๋ฐ์ดํธํ๊ณ ์ถ์ต๋๋ค.
์ด ์ข
์์ฑ์ yarn link
๊ทธ๋ฐ ๋ค์ ์ฑ์์ ์ฐ๊ฒฐ๋ ํ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ข
์์ฑ์ ์ถ๊ฐํฉ๋๋ค.
yarn install
(wtf no.1) ์ดํ ๋ฉ์ธ ์ฑ์ lib ์์กด์ฑ์ด ์ถ๊ฐ๋์ง ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ฑ์ ์ ์ฅํ์ง ์๊ณ ์ ์ํ๊ฒ ์ถ๊ฐํ๋ฉด lib์ ์
๋ฐ์ดํธ๋ฅผ ๊ฒ์ํ๊ธฐ ์ ์ ์๋ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
ํ์ง๋ง-์๋์.
๊ฐ์ฌ
์์ฑ์๊ฐ ๋ฌด์ํ ์ปค๋ฎค๋ํฐ๋ฅผ ๋ณด๋ ์ฃ์กํฉ๋๋ค.
์คํ ์์ค ์์ ๋ด์ฌ์๋ก์ ์ผ๊ด๋ ์ฒ ํ์ด๋
ํ๋ก์ ํธ๋ ์งํ ๋ฉ์ด๋ฆฌ๋ก ๋ถํด๋ฉ๋๋ค. ์ด๊ฒ์ ๋๋๋ก ๋งํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ฌ๋๋ค์โ์๋์คโ. ๋์ํ์ง ์๋ ๊ฒฝ์ฐ ๋๋ง์ ํจํค์ง๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
๋ง์น ์์ฌ๊ฐ npm์ ๊ต์ฒด ํ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
2020 ๋
3 ์ 3 ์ผ ํ์์ผ 03:53 Artur Kwiatkowski [email protected]
์ผ๋ค :
์์ฑ์๊ฐ ๋ฌด์ํ ์ปค๋ฎค๋ํฐ๋ฅผ ๋ณด๋ ์ฃ์กํฉ๋๋ค.
โ
๋น์ ์ด ์ธ๊ธ ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๊ณ ์์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/yarnpkg/yarn/issues/1743?email_source=notifications&email_token=AAGKTA4K3STUMXFRUDMPJU3RFTVTLA5CNFSM4CVUKFMKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNENTG939XHJKTDN5W939XHJJKTDNM
๋๋ ๊ตฌ๋ ์ทจ์
https://github.com/notifications/unsubscribe-auth/AAGKTA7WL4R3R47HBU6EPI3RFTVTLANCNFSM4CVUKFMA
.
์ ๋ Lerna๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ํ๋ก์ ํธ๊ฐ ์ด๋ฏธ ์ด์ ๋จ๊ณ์์ ๋น๋๋๊ณ ์ํฐํฉํธ๊ฐ ์ ๋ฌ๋์์ผ๋ฏ๋ก ๊ฒ์ ๋จ๊ณ๋ฅผ ์ํด CI ๋จ๊ณ ์ค ํ๋์ _only_ Lerna๋ฅผ ์ค์นํ๊ณ ์ถ์ต๋๋ค. ์ด๊ฒ์ด ์ ํจํ ์๋๋ฆฌ์ค์ ๋๊น?
^ ๋ด ์๋ ์๊ฒฌ-์์งํ ์ ์ด๊ฒ์ด ํ์ํ์ง ๋ชจ๋ฅด๊ฒ ๊ณ ์ด ์ค๋ ๋๊ฐ ๊ทธ๋ ๊ฒ ๋์ฐํ๊ฒ ๋ ์๊ฐ ์ค ๋ชฐ๋์ต๋๋ค.ํ์ง๋ง ๋ช ๋ ๋์ ์ด๋ฉ์ผ์ ๋ณด๋ ๊ฒ์ ์ฌ๋ฏธ ์์ต๋๋ค.
๋๋ ์ฌ๊ธฐ์์๋ ๊ด๋ฆฌ์๋ค๊ณผ ๋์ํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
์ด์จ๋ ์ด ๊ธฐ๋ฅ์ ํ์์ฑ์ ์ํ ํ ์์๋ ๋ ์ข๊ณ ๊ตฌ์กฐ์ ์ผ๋ก ๋ ๊ฑด์ ํ ๋ฐฉ๋ฒ์ด์์ ๊ฒ์ ๋๋ค.
์ด ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด yarn-add-no-save
๋ฅผ ๋ง๋ค์์ต๋๋ค. ํ๋ก์ ํธ์ ๋ก์ปฌ ๋๋ ์ ์ญ์ผ๋ก ์ค์นํ ์ ์์ต๋๋ค.
$ yarn add yarn-add-no-save --dev
# or
$ yarn global add yarn-add-no-save
์ผ๋จ ์ค์น๋๋ฉด ๊ฐ๋จํ ์คํํ ์ ์์ต๋๋ค.
$ yarn add-no-save <packages> # (yarn-add-no-save when installed globally)
๋ด ์ฌ์ฉ ์ฌ๋ก๋ peerDependencies
๋ฅผ ์ ์ธํ๋ ๋ชจ๋์ ํ
์คํธํ์ฌ ๋๊ตฌ์ ์๋์ผ๋ก ์ค์นํ๋ ๋ช ๊ฐ์ง ์ต์
์ด ์์ผ๋ฏ๋ก ์คํ๋๋ ๋ชจ๋ ์ต์
์ ํ์ธํ๋ ๊ฒ์
๋๋ค.
$yarn add-no-save --help
์ฐธ๊ณ : ํจํค์ง๋ฅผ ์ ์ฅํ์ง ์๊ณ ํจํค์ง๋ฅผ ์ค์นํ๊ธฐ ์ํด ํจํค์ง๋ฅผ ์ ์ฅํ๋ ๊ฒ์ ์์ด๋ฌ๋ํ๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชฉ์ ์ ๋ง์ง ์๋๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.ํ์ง๋ง ์ด๊ฒ์ด ์ ๊ฐ ์๊ฐ ํด๋ผ ์์๋ ์ต์ ์ ๋ฐฉ๋ฒ์ด๋ฉฐ ๋ด ์๊ตฌ์ ๋ง์ต๋๋ค.
์ด๊ฒ์ ํนํ peerDeps ์ง์์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
์ด ๊ธฐ๋ฅ์ ๋ํ ๋ช ๊ฐ์ง ์ข์ ์ฃผ์ฅ์ด ์์ต๋๋ค. ๊ทธ๊ฒ์ ๊ธฐ๋ณธ์ ์ผ๋กํ๋ ๊ฒ๊ณผ๋ ๋ค๋ฆ ๋๋ค. ์ฌ๋๋ค์ ๊ทธ๊ฒ์ ํ์๋กํ๋ ์ฌ๋๋ค ๋ง์ด ๊ทธ๊ฒ์ ์ฌ์ฉํ ๊ฒ์ด๋ผ๋ ๋ช ํํ ๊น๋ฐ ๋ค์ ๊ทธ๊ฒ์ ์๊ตฌํ๊ณ ์์ต๋๋ค. ํ์ฌ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ์ฅํ๊ณ ์ถ์ง ์์ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ์ ์ฌ์ฉํ์ฌ CI ์ค์ ํ ์คํธ๋ฅผ ์ํํด์ผํฉ๋๋ค. ๋๋ ์ฌ๊ธฐ์ ์ดํดํ๊ธฐ ์ด๋ ค์ด ๊ฒ์ด ๋ฌด์์ธ์ง ์ดํดํ ์ ์์ต๋๋ค.
yarn install xxx
๋ค์ yarn remove xxx
ํฉ๋๋ค.
์ด ์ฌ์ฉ ์ฌ๋ก๊ฐ ๋ ผ์ ๋ ์ ์ด ์๋์ง ํ์คํ์ง ์์ต๋๋ค. ๋ด ์ํฉ์ ์ค๋ช ํด ๋ณด๊ฒ ์ต๋๋ค. ํ๋์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์๋ก ์์กดํ๋ ํจํค์ง๊ฐ ๋ง์ด ์์ต๋๋ค. ๊ทธ๋ค์ ๋ชจ๋ ๋ฃจํธ ์๋น์ค ํ์ ํ๋ก์ ํธ์์ ๊ณตํต ํจํค์ง์ ๋์ผํ ์ธ๋ถ ์ข ์์ฑ์ ์ฌ์ฉํ๋ฉฐ ๊ฐ ๋ก์ปฌ ํจํค์ง๋ ๋ค์์ด ์๋น ํ ์์๋๋ก ๋น๋๋์ด์ผํฉ๋๋ค. ๋๋ ์ด๊ฒ์ ์ํด ์์ฌ ์์ ๊ณต๊ฐ์ ์ฌ์ฉํ๋ ค๊ณ ํฉ๋๋ค. ์์ํ๋ ค๋ฉด ๋ฃจํธ package.json์ ์ ์ ๋ ๋ก์ปฌ ํจํค์ง๊ฐ ์์ต๋๋ค. ๋ชจ๋ ๊ตฌ์ฑ ์์๋ฅผ ๋น๋ํ๋ ํ ์ ์ฒด์ฃผ๊ธฐ ํ์๋ ํด๋น ๋ก์ปฌ ์ข ์์ฑ์ผ๋ก ์์ ํ ์ ๋ฐ์ดํธ ๋ ๋ฃจํธ package.json์ ๊ฐ๊ฒ๋ฉ๋๋ค. ์ด์ ์ด ์ ๋ฐ์ดํธ ๋ ํจํค์ง๊ฐ CI์ ๋น๋๋๋ฉด ์ถ๊ฐ ๋ ๋ชจ๋ ๋ก์ปฌ ํจํค์ง๊ฐ ๋น ๊ฐ์ฉ์ฑ์ผ๋ก ์ธํด ์คํจํฉ๋๋ค. CI์์ ์๋ํ๋ ค๋ฉด ์๋ก ์ถ๊ฐ ๋ ํญ๋ชฉ์ ์ ๊ฑฐํด์ผํฉ๋๋ค.
yarn install xxx
๋ค์yarn remove xxx
ํฉ๋๋ค.
๋๊ฐ๋ค
๋ค์์์ด๋ฅผ ์ํ ํ ์์๋ ์ฌ์ฉ ์ฌ๋ก์ ๋๋ค.
์ฐ๋ฆฌ๋ ๋๊ตฌ ๋ด์์ "์ดํ๋ผ์ด์ธ์ค"๋ฅผ์ํ ๋ชจ๋ ์ ์์ฝ ์์คํ ์ด์๋ ๋๊ตฌ๋ฅผ ๊ตฌ์ถํ๊ณ ์์ผ๋ฉฐ, ๊ณํ์ ํด๋น ์ดํ๋ผ์ด์ธ์ค๋ก ๋ก์ปฌ ์ธ์คํด์ค๋ฅผ ์ค์ ํ๊ณ ๊ตฌ์ฑ์ ํตํด ๋์ ์ผ๋ก ํ์ฑํํ๋ ๊ฒ์ ๋๋ค. ์ดํ๋ผ์ด์ธ์ค๋ npm์ ๊ฒ์๋ฉ๋๋ค (์ํ๋ ๊ฒฝ์ฐ ํ๋ ์ ์ํฌ ์ธ๋ถ์์ ํธ์ถ ํ ์ ์์).
๋ฐ๋๋ผ ํ๋ก์ ํธ๋ ์ด๋ฌํ ํจํค์ง์ ์์กด ํ์ง ์์ผ๋ฏ๋ก package.json
์ ์ฅํ๋ ๊ฒ์ ๋ถ์ ์ ํฉ๋๋ค. ํน์ ์ธ์คํด์ค์ ๊ตฌ์ฑ์ ํจํค์ง ์ค ํ๋๋ฅผ ๋ก์ปฌ์ ์ค์นํด์ผ ํ ์ ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ด์๋ ๊ฒ์ ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ์ ํ์ ์ธ ๊ฒฐ์ ์ธ
์ฌ๊ธฐ์ "๊ด๋ฆฌ์"๋ต๊ธ์ ์ฝ๊ธฐ ์ ์๋ ๋ด๊ฐ ๊ฐ์ฅ ๊ณ ์ง์ด ์ผ ์ฌ๋์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
๊ฑฐ์ 4 ๋ ... ๐คฆ
"๊ณ ์ง"์ "๋์์ธ ๋น์ ์ด ์๊ณ ๋๊ตฌ๊ฐ ์๊ตฌํ๋ ๋ชจ๋ ๊ฒ์ ๊ตฌํํ์ง ์๋ ๊ฒ"๊ณผ๋ ๋ค๋ฆ ๋๋ค.
"๊ณ ์ง"์ "๋์์ธ ๋น์ ์ด ์๊ณ ๋๊ตฌ๊ฐ ์๊ตฌํ๋ ๋ชจ๋ ๊ฒ์ ๊ตฌํํ์ง ์๋ ๊ฒ"๊ณผ๋ ๋ค๋ฆ ๋๋ค.
๋์์ธ ๋น์ ์ ํ๋ณตํ ๊ธธ์ ์ค๋ช ํ๊ณ ์ฌ๊ธฐ์์ ์์ฒญํ ํ์ถ ํด์น๋ก ๋ ๋์ ์ปค๋ฎค๋ํฐ์ ์ ์ฉ์ฑ์ ๋ํฉ๋๋ค.
"์์ ํ์"์ค์น ๋ฐ ํ์ ์ ์ง์ ์ฆ๋ถ ์ค๋
์ท ( node_modules
)์ ์ถ์ ํ๋ ์ ๊ธ ํ์ผ์ ์น์
์ ์ถ๊ฐํ์ฌ ์์ ํ๊ฒ ๋๋๋ฆด ์์๋ ์ด์ ๋ ๋ฌด์์
๋๊น? ๋๋ node_modules์ ๋ณ๋์ ํด๋์ ์ข
์์ฑ์ ๋ฃ๊ณ node_modules๋ฅผ ์ฌ์ฉํ์ฌ ํจํค์ง์ ๋งํฌ๊ฐ ๋
ธ์ถ๋๋๋ก ์ ์งํ๋ฉด Yarn์ ์ค์ ๋ก ์์ฒด์ ์ผ๋ก ํญ๋ชฉ์ ๊ด๋ฆฌํ๊ณ ๋ณด์ด์ง ์๋ ์ค์น๊ฐ ํญ๋ชฉ์ ๋ฎ์ด ์ฐ๊ฑฐ๋ ๊นจ๋จ๋ฆด ์ผ๋ ค๊ฐ ์์ต๋๋ค.
Git์ ์์ญ ๋ ์ ์์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ๋ฐ๋ผ ์ก์ผ์ธ์! ๋ญ๊ฐ ์๊ฐํด ๋ด์ธ์! ๊ทธ๊ฒ์ด ๋ฐ๋ก ๋์์ธ์ ๋๋ค-ํ๊ณ๋ฅผ ๊ทน๋ณตํ๋ ๊ฒ (๋๋ ๊ทธ๊ฒ์ ๊ตด๋ณตํ๋ ๊ฒ๋ณด๋ค).
์ฌ๊ธฐ ์์ชฝ ๋์ ํฐ๋ ๋น์ ์ ๋ฌด์ง, ์ง๋์น ์๊ฐ, ๋ถํ์ํ ์๊ทนํ์์ ๋น๋กฏ๋ฉ๋๋ค. ๋ฌด์ ๋, ์ฒ ํ๋, ํ๋ช ๋, ์ ์น๋ ์์ต๋๋ค. ๋๊ตฌ, ์ฝ๋ ๋ฌถ์ ๋ฐ ์ํํด์ผ ํ ์์ ์ด ์์ต๋๋ค. ๋๊ตฌ๊ฐ ์์ ์ ์๋ฃํ๋ ๋ฐ ๋์์ด๋์ง ์๋ ๊ฒฝ์ฐ ํด๋น ํน์ ์๋๋ฆฌ์ค๋ฅผ์ํ ๋๊ตฌ๊ฐ ์๋๋๋ค. ๊ทธ๋ฆฌ๊ณ Yarn๊ณผ ๊ฐ์ด ๋์ฒด์ ๋ฒ์ฉ์ผ๋ก ์ฌ์ฉ๋๋ ๋๊ตฌ์ ๊ฒฝ์ฐ ์ฌ๊ธฐ์์ ๋ฌด์๋๋ ์ผ๋ฐ์ ์ธ ์๋๋ฆฌ์ค๊ฐ ๋๋ฌด ๋ง์์ ๋จ์ํ ์์ฒด ๋ฌด๋ค์ ํ๋ ๊ฒ์ ๋๋ค.
๋๋ ์ฐ๋ฆฌ๊ฐ ๊ทธ๋ฅ ๋์ ๋ค๋ ์์์ ๋ ๋ชจ๋๊ฐ ์ข์ ์ธ๋์ ์๋ก ๋ฐ์ด ๋ถ์ด๋ ๊ฒ์ฒ๋ผ ๋๊ปด์ง๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ ์์ ์๊ฐ ์ด๊ฒ์ ๋ํด ๊ทธ๋ ๊ฒ ์๊ฒฌ์ด์๋ ์ด์ ๋ฅผ ์ดํดํ์ง ๋ชปํ๋ค. ์ฌ์ฉ๋ฒ์ด ๋ณด์ด์ง ์๋๋ค๊ณ ํด์ ์๋ฌด๊ฒ๋ ์๋ค๋ ์๋ฏธ๋ ์๋๋๋ค. ๋๋ ์ฌ๋๋ค์ด ๊ทธ๊ฒ์ ์๊ตฌํ๋ค๋ฉด ๊ทธ๊ฒ์ ๊ทธ๋ค์ด ๊ทธ๊ฒ์ ํ์๋กํ๋ค๋ ๊ฒ์ ์๋ฏธํ๊ณ ๊ทธ๋ค์ ๋ฐ๋์ ์ด๋ฆฌ์์ ๊ฒ์ด ์๋๋ผ๊ณ ๋ฏฟ์ต๋๋ค.
์ ํ์
--no-save
์ต์ ์ ์ถ๊ฐํ๋ฉด ์ผ๋ถ ์ฌ๋๋ค์ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๊ณ ์ ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.