Blog

yarn

yarn

Facebook ์—์„œ ๋งŒ๋“  JavaScript Package Manager ์ด๋‹ค

์™œ ๋งŒ๋“ค์—ˆ๋Š”๊ฐ€?

์ฝ”๋“œ ๋ฒ ์ด์Šค๊ฐ€ ์ปค์ง€๋ฉด์„œ npm ์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ์•ˆ์ •์„ฑ, ์„ฑ๋Šฅ, ๋ณด์•ˆ์— ๋Œ€ํ•œ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ Facebook, Google, Exponent, Tilde ๊ฐœ๋ฐœ์ž๋“ค์ด npm client๋ฅผ ๋Œ€์ฒดํ•  ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋˜์—ˆ๋‹ค

npm ์ด์Šˆ?

โ€ข
์„ฑ๋Šฅ ์ด์Šˆ
โ—ฆ
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜๊ฐ€ ๋ณ‘๋ ฌ์ ์ด์ง€ ์•Š๊ณ , ์˜์กด์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ๋‹ค์šด๋ฐ›๋‹ค๋ณด๋‹ˆ ์„ฑ๋Šฅ์ด ๊ต‰์žฅํžˆ ์ €ํ•˜๋จ
โ€ข
๋ณด์•ˆ ์ด์Šˆ
โ—ฆ
์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ ํ˜น์€ ์™ธ๋ถ€ ๋ฐฉํ™”๋ฒฝ์ด ์ฐจ๋‹จ๋˜์–ด ์žˆ๋Š” ํ™˜๊ฒฝ์—์„œ ์˜์กด์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์„ ์ˆ˜ ์—†๋‹ค.
โ€ข
๊ทธ ์™ธ์— ์—ฌ๋Ÿฌ ์ด์Šˆ๋“ค์ด ์žˆ์Œ

yarn vs npm

โ€ข
No Cache, No node_moduels, No locks
โ€ข
npm install : 1๋ถ„ 29์ดˆ
โ€ข
yarn install : 24์ดˆ

์„ค์น˜

โ€ข
npm
$ npm i -g yarn
Shell
๋ณต์‚ฌ
โ€ข
mac
$ brew install yarn
Shell
๋ณต์‚ฌ
โ€ข
ubuntu
$ sudo apt-get update && sudo apt-get install yarn
Shell
๋ณต์‚ฌ
โ€ข
yarn update ( currently not available )
$ yarn self-update
Shell
๋ณต์‚ฌ

์‚ฌ์šฉ

โ€ข
ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐํ™”
โ—ฆ
npm ์ฒ˜๋Ÿผ package.json์„ ์ƒ์„ฑํ•œ๋‹ค
โ—ฆ
์ด๋ฏธ package.json์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์žฌ์‚ฌ์šฉํ•œ๋‹ค
$ yarn init
Shell
๋ณต์‚ฌ
โ€ข
๋ชจ๋“ˆ ์„ค์น˜
$ yarn install [package-name]@[version-or-tag] [options]
Shell
๋ณต์‚ฌ
โ€ข
ํŒจํ‚ค์ง€ ์ถ”๊ฐ€
โ—ฆ
npm install --save ์™€ ๊ฐ™์€ ์˜๋ฏธ
$ yarn add [package-name]@[version-or-tag] // production $ yarn add --dev [package-name]@[version-or-tag] // development $ yarn add file:/path/to/local/folder // ๋กœ์ปฌ ํด๋” ์ถ”๊ฐ€ $ yarn add file:/path/to/local/tarball.tgz // ๋กœ์ปฌ ํŒŒ์ผ ์ถ”๊ฐ€ $ yarn add <git remote url> // git repository ์ถ”๊ฐ€ $ yarn add https://my-project/package.tar.gz // URL ์ถ”๊ฐ€
Shell
๋ณต์‚ฌ
โ€ข
ํŒจํ‚ค์ง€ ์‚ญ์ œ
$ yarn remove [package-name]@[version-or-tag]
Shell
๋ณต์‚ฌ
โ€ข
Global ํŒจํ‚ค์ง€ ์„ค์น˜
$ yarn global add [package-name]@[version-or-tag]
Shell
๋ณต์‚ฌ
โ€ข
Global ํŒจํ‚ค์ง€ ์‚ญ์ œ
$ yarn global remove [package-name]@[version-or-tag]
Shell
๋ณต์‚ฌ
โ€ข
์บ์‹œ ์‚ญ์ œ
$ yarn cache clean
Shell
๋ณต์‚ฌ
โ€ข
์˜์กด์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜
$ cat package.json ... "dependencies": {} "devDependencies": { "babel-core": "^6.7.0", "babel-loader": "^6.2.4", "babel-preset-es2015": "^6.6.0" } ...
Shell
๋ณต์‚ฌ

migration

yarn์€ npm, bower ์›Œํฌ ํ”Œ๋กœ์šฐ์— ๋ชจ๋‘ ํ˜ธํ™˜์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ mixing registries๋ฅผ ์ง€์›ํ•˜๊ธฐ ๋–„๋ฌธ์— ๋ณ„๋‹ค๋ฅธ ์ž‘์—… ์—†์ด ๋ฐ”๋กœ yarn์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

์ฐธ๊ณ 

โ€ข
https://code.facebook.com/posts/1840075619545360
โ€ข
https://yarnpkg.com/en/compare
โ€ข
https://yarnpkg.com/en/docs/install#mac-tab
โ€ข
https://yarnpkg.com/en/docs/getting-started