๊ธฐ๋ฅ ์์ฒญ์ด ๋ฌธ์ ์ ๊ด๋ จ๋์ด ์์ต๋๊น?
ํน์ ๋ฒ์ ์ด ์ด๋ฏธ ๋ฐฐํฌ๋์ด ๋ฐฐํฌ์ ์คํจํ๋ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ์ด๊ฒ์ ์๋ ๋ฆด๋ฆฌ์ค๊ฐ ๋ฐ์ํด์ผ ํ๋ ์ ์์ ์ธ ํ๋ก์ธ์ค๊ฐ ์๋์ง๋ง... ๋ฐ์ํฉ๋๋ค. ์ด์ ฏ๋ฐค์ ๋ฒ๊ทธ๊ฐ ์์๊ณ ๋๊ตฐ๊ฐ package.json ๋ฒ์ ์ ์ถฉ๋์ํค์ง ์๊ณ ์๋์ผ๋ก npm์ ๋ฐฐํฌํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ์ด๋ก ์ธํด ๋ชจ๋ ๊ฒ์ด ์๋์ผ๋ก ๋ฒ์ ์ ๋ฒํ ๋๊น์ง ํด๊ฒฐ๋์ง ์์ ์๋ชป๋ ์ํ๊ฐ ๋์์ต๋๋ค.
์ํ๋ ์๋ฃจ์ ์ค๋ช
package.json์ version
ํ๋๋ฅผ ๊ณ์ ์
๋ฐ์ดํธํ๋ npm์ ๋ฒ์ ์ ์ถ์ฒ๋ก ์ฌ์ฉํ์ญ์์ค. ๋ถ์ผ์น๊ฐ ์๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ๋ฅผ ํ์ํ์ง๋ง package.json์ ๋ฒ์ ์ด ์๋ npm์ ๋ฒ์ ์ ๊ธฐ๋ฐ์ผ๋ก ๋ฒ์ ์ ์
๋ฐ์ดํธํฉ๋๋ค.
์ค์ค ๋ง์์ ๋ญ๋๋ค. ์ด๊ฒ์ ๋ชจ๋ ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ฒฝ์ฐ ๊น๋ค๋ก์ธ ์ ์์ต๋๋ค.
lerna์ ๋ํด --force-publish=*
๋ฅผ ์ํํ๋ฏ๋ก ๋ชจ๋ ํจํค์ง์ ๋งํฌ๋ ๋ฒ์ ์ด ์์ด์ผ ํ๋ฏ๋ก ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค.
์์ผ๋ก ํด๋น ํ๋๊ทธ๋ฅผ ์ ๊ฑฐํ๋ฉด ๋ค์์ ์ํํด์ผ ํฉ๋๋ค. idk
๋ํ semver ๋ฌธ์์ด๋ง ์ฌ์ฉํ๋ npm version
๋ฅผ ์คํํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ค์ ๋ก ์ง๊ธ ์๋ฌด๋ฐ๋ ํจํค์ง ๋ฒํธ๋ฅผ ์ค์ ํ์ง ์์ต๋๋ค. ์ค์ค๋ก ์ค์ ํ๋ ๊ฒ์ ์ด๋ ต์ง ์๊ฒ ์ง๋ง monorepos๋ ๋ค์ ๊ฐ๋จํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
๋๋ถ๋ถ์ ๋ช ๋ น์ ํ๊ทธ์์๋ ์๋ํ๋ฏ๋ก ๋ฆด๋ฆฌ์ค์ ํ๊ทธ๊ฐ ์ง์ ๋์ง ์์ผ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
"๋๋ ์ ์ ๋ "๋ ๋ฆฝ์ ์ธ" ๋ฒ์ ๊ด๋ฆฌ ๋ชจ๋๊ฐ ์ค์๋ผ๊ณ ํ์ ํฉ๋๋ค. ๊ทธ๊ฒ์ด ํ๋ ์ผ์ ์ฌ๋๋ค์ด ๋ฌด์์ ํจํค์ง๋ฅผ ๋จ์ผ ์ ์ฅ์์ ๋์ง๊ณ ๋์์ ๋ฒ์ ์ ์ง์ ํด์ผ ํ ๋ ๋ถํํ๊ฒ ๋ง๋๋ ๊ฒ๋ฟ์ ๋๋ค." ~ lerna ๊ด๋ฆฌ์๋ก๋ถํฐ.
๋ฐ๋ผ์ --force-publish=*
๋ ๊ด์ฐฎ์ ๋ณด์
๋๋ค.
--force-publish
์ ๋
๋ฆฝ ๋ฒ์ ๊ด๋ฆฌ๋ ๊ฐ์ ๊ฒ์ด ์๋๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก lerna๋ ํจํค์ง์ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ ๊ฒฝ์ฐ์๋ง ์
๋ฐ์ดํธ๋ฅผ ๊ฒ์ํฉ๋๋ค. --force-publish=*
๋ฅผ ์ฌ์ฉํ์ฌ ๋ง์ง๋ง ๊ฒ์ ์ดํ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋๋ผ๋ lerna๊ฐ ๋ชจ๋ ํจํค์ง์ ๋ฒ์ ์ ๊ฒ์ํ๋๋ก ํฉ๋๋ค.
์ฆ A
ํจํค์ง์๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ง๋ง B
์๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ต๋๋ค. lerna๋ A
์ ์ ๋ฒ์ ๋ง ๊ฒ์ํฉ๋๋ค( B
๋ ํ์ฌ ๋ฒ์ ์ผ๋ก ์ ์ง๋จ). ๋ค์ ๋ฆด๋ฆฌ์ค A
๋ฐ B
์๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ผ๋ฉฐ ๋ ๋ค ๋์ผํ ์ ๋ฒ์ ์ผ๋ก ๊ฒ์๋ฉ๋๋ค.
๋ด๊ฐ ์๊ฐํ๊ณ ์๋ ๊ฒ(๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ์ง์ํ ๊ฒ์ธ์ง ํ์คํ์ง ์์)์ master
(๋๋ ๋ฉ์ธ ๋ธ๋์น)๊ฐ ์๋ ๋ฆด๋ฆฌ์ค์ ๊ฐ๋ฅ์ฑ์
๋๋ค. ์ด ์์ ๊น์ง ์ฐ๋ฆฌ๋ ํญ์ ๋ฆด๋ฆฌ์ค๋ฅผ ์ํ 1๊ฐ์ ๊ฒฝ๋ก๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ๋ค์ ํญ์ ์ ํ์
๋๋ค(npm ๋๋ github์์ latest
๋ฒ์ ์ฌ์ฉ).
์ด์ ๋ฆด๋ฆฌ์ค๋ฅผ ํจ์นํด์ผ ํ๋ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ๋ฉ๋๊น? (1.x์๋ ๋ฒ๊ทธ๊ฐ ์๊ณ master
๋ 2.x์ ์์ง๋ง 1.xw/๋ ์์ ํ๊ณ ์ถ์ต๋๋ค.) lerna
๋๋ pkg
๋ฒ์ด๋๋ ๊ฒฝ์ฐ
์ด๊ฒ์ git ํธ๋ฆฌ ์ธ๋ถ์์ ์ฌ์ฉํ๋๋ก ๋ณ๊ฒฝํ๋ฉด npm(๋๋ ์ต์ ๋ฒ์ ์ ๊ฐ์ ธ์ค๋ ๊ณณ)์ latest
๊ฐ 1๊ฐ๋ง ์๊ธฐ ๋๋ฌธ์ ํด๋น ๋์์ ์ง์ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ข์ ๊ธฐ๋ฅ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๊ตฌํํ๋ ๋ฐ ์ฝ๊ฐ์ ์์ ์ด ํ์ํ ์ ์์ต๋๋ค.
๋ฒ์ :
version
๋ฅผ ๊ณ์ฐํฉ๋๋ค. ํจํค์ง ๋ฒ์ ์ผ๋ก ์ฝ๊ฒ ์ ํํ ์ ์์ต๋๊น?๋ฆด๋ฆฌ์ค/๋ณ๊ฒฝ ๋ก๊ทธ
getCurrentVersion
๋ gt(lastRelease, lastVersion)์ธ ๊ฒฝ์ฐ lastRelease๋ฅผ ๋ฐํํฉ๋๋ค. ๋ฐ๋ผ์ ์ด๊ฒ๋ ์๊ณ ์์ด์ผ ํฉ๋๋ค.์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์ด๋ฏธ git ํธ๋ฆฌ ์ธ๋ถ์์ ๋ฌผ๊ฑด์ ์ฌ์ฉํ๊ณ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ง์ต๋๊น?
์ฐ๊ฒฐ๋ git ํ๊ทธ๊ฐ ์๋์ง ํ์ธํ๋ ค๋ฉด latestRelease์ ์์กดํด์ผ ํ๋ฏ๋ก ์ต์ npm ๋ฒ์ ์ ํ๊ทธ๊ฐ ์๋์ง ํ์ธํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ํ์ ์ต์ ์ด ์๋๋๋ค(์ด ๋ฌธ์ ์์ ์ค๋ช ํ๋ ๊ฒ๊ณผ ๊ฐ์ด). .
์๋ง๋ ๋ง์ง๋ง git ํ๊ทธ์์ ๋ฒ์ ์ด ์ง์ ๋ ์ ํ๋๊ทธ๊ฐ ํ์ํ ๊ฒ ๊ฐ์ต๋๋ค. --from-git
๊ทธ๊ฒ์ผ๋ก ํด์ ๋ช ๋ น์ด ์๋ํ ๊ฒ์ ๋๋ค. ๋ณ๊ฒฝ ๋ก๊ทธ๊ฐ ์ด๋ป๊ฒ ์๊ฒผ๋์ง ๋ถ๋ฅํด์ผ ํฉ๋๋ค.
--from-git
ํ๋๊ทธ๋ NPM์์ ๋ฌด์์ด๋ ํ์ธํ๋ ๊ฒ์ ์ฌ์ ์ํ ์๋ ์์ต๋๋ค. ์ ์๊ฐ์๋ #173์ ๋ณํฉํ ์ ์์์ ์๋ฏธํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ฐ๊ฒฐ๋ git ํ๊ทธ๊ฐ ์๋์ง ํ์ธํ๋ ค๋ฉด latestRelease์ ์์กดํด์ผ ํ๋ฏ๋ก ์ต์ npm ๋ฒ์ ์ ํ๊ทธ๊ฐ ์๋์ง ํ์ธํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ํ์ ์ต์ ์ด ์๋๋๋ค(์ด ๋ฌธ์ ์์ ์ค๋ช ํ๋ ๊ฒ๊ณผ ๊ฐ์ด). .
์๋ง๋ ๋ง์ง๋ง git ํ๊ทธ์์ ๋ฒ์ ์ด ์ง์ ๋ ์ ํ๋๊ทธ๊ฐ ํ์ํ ๊ฒ ๊ฐ์ต๋๋ค.
--from-git
๊ทธ๊ฒ์ผ๋ก ํด์ ๋ช ๋ น์ด ์๋ํ ๊ฒ์ ๋๋ค. ๋ณ๊ฒฝ ๋ก๊ทธ๊ฐ ์ด๋ป๊ฒ ์๊ฒผ๋์ง ๋ถ๋ฅํด์ผ ํฉ๋๋ค.
--from-git
ํ๋๊ทธ๋ NPM์์ ๋ฌด์์ด๋ ํ์ธํ๋ ๊ฒ์ ์ฌ์ ์ํ ์๋ ์์ต๋๋ค. ์ ์๊ฐ์๋ #173์ ๋ณํฉํ ์ ์์์ ์๋ฏธํฉ๋๋ค.