์ ๊ฐ ๋ง๋ Remark Math๋ฅผ ๋ฐฐํฌํ๋ฉด์ ๋ชจ๋ ธ๋ฆฌํฌ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด [Lerna]๋ฅผ ์ฌ์ฉํ ๋ ธํ์ฐ๋ฅผ ๊ณต์ ํฉ๋๋ค.
๊ฐ๋ น ๋ฐ๋ฒจ๊ณผ ๊ฐ์ด ๋ณต์์ ํจํค์ง๊ฐ ์๋ก ์ฐ๊ณ๋์ ํ์ฉ๋๋ ํจํค์ง์ ๊ฒฝ์ฐ, ๊ฐ๊ฐ์ ๋ฆฌํฌ์งํฐ๋ฆฌ๋ก ๋ง๋ค๋ฉด ๊ด๋ฆฌํ๊ธฐ๊ฐ ๋งค์ฐ ๋ณต์กํด์ง๋๋ค. ์๋ง๋ ํจํค์ง๊ฐ์ ์ด์๋ฅผ ์ฒ๋ฆฌํ ๋ ๋งค๋ฒ ๋ฆฌํฌ์งํฐ๋ฆฌ๋ฅผ ๊ฑด๋๋ค๋๋ฉด์ ํ์ธ์ ํด์ผํ๊ณ ๋งค๋ฒ ๋ฒ๊ฑฐ๋กญ๊ฒ ๋ฐ๋ก๋ฐ๋ก ๋ฐฐํฌํด์ผํ๊ฒ ์ฃ ...
์ด๋ฅผ ์ํ ๋์ฑ ์ค ํ๋๊ฐ ๋ชจ๋ ธ๋ฆฌํฌ์ธ๋ฐ, ํ๋์ ๋ฆฌํฌ์งํฐ๋ฆฌ์ ๋ณต์์ ํจํค์ง๋ฅผ ๋๋ ํ์์ ๋๋ค. ๋ฆฌ์กํธ์ ๋ฐ๋ฒจ์์ ์ฃผ๋ก ํ์ฉ๋๊ณ ์๊ณ , Remark Math์ ๊ฒฝ์ฐ๋ ์์ ํ์ ํ์ฅ๊ณผ ๋ ๋๋ฌ ํ๋ฌ๊ทธ์ธ์ ์ฝ๊ฒ ๊ด๋ฆฌํ๊ธฐ ์ํด ํ๋์ ๋ชจ๋ ธ๋ฆฌํฌ๋ก ๋ง๋ค์์ต๋๋ค.
Why is Babel a monorepo? - Babel
๋ชจ๋ ธ๋ฆฌํฌ๋ฅผ ๊ฐํธํ๊ฒ ๊ด๋ฆฌํ ์ ์๋๋ก ๋์์ฃผ๋ CLI ํจํค์ง์ ๋๋ค.
Git์ ์ปค๋ฐ์ํ๋ฅผ ํ์ธํ์ฌ ๋ณ๊ฒฝ๋ ํจํค์ง๋ง ์ผ๊ด์ ์ผ๋ก NPM์ผ๋ก ๋ฐฐํฌํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๊ณ ๋์์ ๋ฆฌ๋ชจํธ ๋ฆฌํฌ์งํฐ๋ฆฌ๊น์ง ํธ์ํด์ค๋๋ค. ์์ง ๋ฒ ํ๋ฒ์ ผ์ด๊ธดํด๋ ๋งค์ฐ๋งค์ฐ ํธ๋ฆฌํ์ด์. :100::100:
lerna init
์ฐ์ , Git์ ๋ณ๊ฒฝ์ ์ ํตํด ํจํค์ง๋ฅผ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ Git์ด ์ด๊ธฐํ ๋์ด์ ธ์ผํฉ๋๋ค.
git init
๊ทธ๋ฆฌ๊ณ , Lerna๋ฅผ ๊ธ๋ก๋ฒ๋ก ์ค์น์ ํจ๊ป ์ด๊ธฐํ๋ฅผ ํฉ๋๋ค.
npm i -g lerna
lerna init -i
-i
ํ๋๊ทธ๋ --independent
์ ์ผ๋ผ์ด์ด์ค๋ก, ๊ฐ๊ฐ์ ํจํค์ง์ ๋ฒ์ ผ์ ๋
๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌํ๊ฒ ๋ค๋ ์๋ฏธ์
๋๋ค. ์์ด ๊ธฐ๋ณธ์ํ๋ก ์ด๊ธฐํ๋ฅผ ์ํค๋ฉด ํ๋์ ๋ฒ์ ผ์ผ๋ก ๋ชจ๋๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
Babel ์ญ์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌํฉ๋๋ค.
์ด๊ธฐํ๋ฅผ ๋ง์น๋ฉด lerna.json
์ด ์์ฑ๋ฉ๋๋ค.
{
"lerna": "2.0.0-beta.38",
"packages": ["packages/*"],
"version": "independent"
}
lerna
๋ ์ฌ์ฉ์ค์ธ Lerna์ ๋ฒ์ ผ์ด์์. Lerna๊ฐ ์์ง ๋ฒ ํ์ด์ด์ ์ค์ ์ด ์ธ์ ๋ฐ๋์ง ๋ชจ๋ฅด๊ธฐ์ ์ฌ์ฉํ๋ CLI์ ์ค์ ์ ๋ฒ์ ผ์ด ํญ์ ๋์ผํ ๊ฒ์ ์๊ตฌํ๊ณ ์์ด์.
packages
๋ ๊ฐ๊ฐ์ ํจํค์ง๋ค์ ์์น๋ฅผ ๋ํ๋
๋๋ค.
version
์ -i
ํ๋๊ทธ๋ฅผ ๋ฃ์๊ธฐ ๋๋ฌธ์ independent
๋ก ์ค์ ๋์ด ์์ต๋๋ค. ํ๋๊ทธ๊ฐ ์์ผ๋ฉด ๊ทธ๋ฅ ๋ฒ์ ผ์ด ๋ค์ด๊ฐ์.
์ด์ ๊ฐ๊ฐ์ ํจํค์ง๋ packages/some-package
ํ์์ผ๋ก ๋ฃ์ด์ฃผ์๋ฉด ๋ฉ๋๋ค. ๋ํ, ๊ฐ๊ฐ์ ํจํค์ง๋ง๋ค package.json
์ ์์ฑํด์ฃผ์
์ผ ํด์!
lerna bootstrap
npm install
์ ๊ฐ๊ฐ์ ํจํค์ง์ ๋ํด ์ผ๊ด์ ์ผ๋ก ๋๋ ค์ค๋๋ค.
๋ฃจํธ ๋๋ ํ ๋ฆฌ์ package.json
์ postinstall
๋ก ์ถ๊ฐํด๋๋ฉด ๊ฐํธํ๊ฒ ์ฌ์ฉํ ์ ์์ด์.
{
"scripts": {
"postinstall": "lerna bootstrap"
}
}
lerna publish
npm publish
๋ฅผ ์ผ๊ด์ ์ผ๋ก ์คํํด ์ค๋๋ค. ์ปค๋ฐ์ ํ์ธํด์ ์
๋ฐ์ดํธ๊ฐ ๋ ํจํค์ง๋ง ๋ฐฐํฌ๋ฅผ ์๋ํฉ๋๋ค.
๊ฐ์ธ์ ์ผ๋ก ํธ๋ฆฌํ๋๊ฑด ๋ํํ์์ผ๋ก ๊ฐ๋จํ๊ฒ ๋ฒ์ ผ์ ์ฌ๋ฆด ์ ์์๋ ๊ฒ์ด์์ด์.
? Select a new version for remark-math (currently 0.2.0) (Use arrow keys)
โฏ Patch (0.2.1)
Minor (0.3.0)
Major (1.0.0)
Custom
๊ทธ๋ฆฌ๊ณ ์์ ํ๊ฒ ๋๋ธ์ฒดํฌ๊น์ง ํด์ค๋๋ค.
Changes:
- rehype-katex: 0.2.0 => 0.2.1
- remark-html-katex: 0.2.0 => 0.2.1
- remark-math: 0.2.0 => 0.2.1
? Are you sure you want to publish the above changes?
์๋ฃํ๋ฉด ๋ฒ์ ผ๋ถ๋ถ์ ์ ๋ฐ์ดํธํ๋ ์ปค๋ฐ๊ณผ ํจํค์ง๋ณ๋ก ํ๊ทธ๋ฅผ ์์ฑํ๊ณ ๋ฑ๋ก๋ ๋ฆฌํฌ์งํฐ๋ฆฌ๋ก ํธ์๊น์ง ํด์ค์. ์ ๋ง ํธ๋ฆฌํด์! :smile:
package.json
์์ devDependencies
์ scripts
๋ ํ์์๋ค?๋ณต์์ ํจํค์ง๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ฒํ๊ธฐ์ํด ๋ง๋ค์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐํ๊ฒฝ ์ญ์ ํตํฉ์ํค๋๊ฒ ๊ด๋ฆฌํ๊ธฐ ํธํ๋ค๊ณ ์๊ฐํด์. ๋ฌผ๋ก ์ผ๊ด์ ์ผ๋ก npm
๋ช
๋ น์ ์คํ์ํค๋ ์ปค๋งจ๋๊ฐ ์๊ธฐ๋ ํด์. ๋์ , ๊ฐ๊ฐ์ ํจํค์ง๋ณ๋ก ์คํฌ๋ฆฝํธ๋ฅผ ๊ด๋ฆฌํ๋๊ฑด ์ด์ฉ๋ฉด ๋ชจ๋
ธ๋ฆฌํฌ๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์๋ ์ผ์ด์ค์ด์ง ์์๊น ์ถ์ด์.
๊ณ ๋ก, ์ ์ ๊ฒฝ์ฐ ๊ฐ๋ฐ์ ํ์ํ ๋ชจ๋ ์คํฌ๋ฆฝํธ๋ค์ ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ package.json
์ ๋ฃ์ด ๋์์ต๋๋ค.
package.json
์์ dependencies
์ version
๊ฐ ํ์์๋ค?๋ฃจํธ๋๋ ํ ๋ฆฌ๋ ํผ๋ธ๋ฆฌ์๋ฅผ ํ์ง ์๋ ๋ถ๋ถ์ด๊ธฐ ๋๋ฌธ์, dependencies
๊ฐ ํ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ , version
์ ๋ฏธ๋ฆฌ ์ง์๋๋ ๊ฒ๋ ์๋นํ ์ข์ ๋ฒ๋ฆ์ด๋ผ๊ณ ์๊ฐํด์. ์ค์๋ก ๋ฃจํธ ๋๋ ํ ๋ฆฌ์์ npm publish
๋ช
๋ น์ ์คํํด๋ฒ๋ ค๋ version
์ด ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฐฐํฌ๊ฐ ์์ฒ์ ์ผ๋ก ๋ถ๊ฐ๋ฅ ํ๊ฒ ๋ฉ๋๋ค.
์๋ฐํ๊ฒ ๋งํ๋ฉด TravisCI๊ฐ ๋์๊ฑด๋ฐ.... ๋ฐฐํฌ์ ํจํค์ง๋ณ๋ก ํ๊น ์ ํ๊ธฐ ๋๋ฌธ์ TravisCI๊ฐ ํ๊ทธ๋ณ๋ก ํ ์คํธ๋ฅผ ๋ฐ๋ณตํด์ ๋๋ ค์..๐ฃ ๐ฃ (๋ถ๋ช ์ปค๋ฐ์ ํด์๊ฐ ์ผ์นํจ์๋ ๋ถ๊ตฌํ๋ฐ๋ ๋ง์ด์ฃ ...)
์ผ๋จ์ ๋์ฒ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ด ํ๋๊ทธ๋ฅผ ์ถ๊ฐ์ํค๋ 2๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
--skip-git
: ์ด ๊ฒฝ์ฐ ๊น์ ์กฐ์์์ด ๋ฐฐํฌ๋ฅผ ํฉ๋๋ค. ๋ฒ์ ๋ณ๊ฒฝํ ์ง์ ์ปค๋ฐ/ํธ์๋ฅผ ํด์ฃผ์
์ผํฉ๋๋ค.-m "[ci skip]"
: ์ปค๋ฐ๋ฉ์ธ์ง๋ฅผ ๋ฎ์ด์จ์ CI๋ฅผ ์๋ต์ํต๋๋ค.npmjs.com
๋ ๋ฃจํธ ๋๋ ํ ๋ฆฌ package.json
์ name
๊ณผ ๋์ผํ ์ด๋ฆ์ ํจํค์ง์ ํํด์ ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ readme.md
๋ฅผ ํด๋น ํจํค์ง์ ๋ฌธ์๋ก ๊ฐ์ ธ์์. ๊ณ ๋ก, ๋ค๋ฅธ ํจํค์ง๋ค์ ๋ค ๋ฐ๋ก๋ฐ๋ก readme.md
๋ฅผ ๋ง๋ค์ด ์ฃผ์ด์ผ ํฉ๋๋ค. ๋ฌผ๋ก , ๋์ผํ ์ด๋ฆ์ ํจํค์ง์๋ readme.md
๋ฅผ ๋ง๋ค์ด ์ฃผ๋ฉด ๋ฃจํธ๋๋ ํ ๋ฆฌ๊ฐ ์๋๋ผ ํจํค์ง์ชฝ ๋ฌธ์๋ฅผ ์ฐ์ ํด์ ํ์ํฉ๋๋ค.
๋ง์ด ๋ณต์กํ๋ Remark Math์ ๊ฒฝ์ฐ๋ฅผ ๋ณด์ฌ๋๋ฆด๊ฒ์.
/readme.md # remark-math์ ๋ฌธ์
/packages/remark-html-katex/readme.md # remark-html-katex์ ๋ฌธ์
/packages/rehype-katex/readme.md # rehype-katex์ ๋ฌธ์
๋ง์ฝ์ packages/remark-math/readme.md
๋ฅผ ์ถ๊ฐํ ๊ฒฝ์ฐ ์ด๋ ๊ฒ ๋ฐ๋๋๋ค.
/readme.md # npmjs.com์์๋ ํ์๋์ง ์์ต๋๋ค!
/packages/remark-math/readme.md # remark-math์ ๋ฌธ์
/packages/remark-html-katex/readme.md # remark-html-katex์ ๋ฌธ์
/packages/rehype-katex/readme.md # rehype-katex์ ๋ฌธ์
npm
๋์ yarn
2.0.0-beta.38
๋ฒ์ ผ ๋ถํฐ lerna.json
์ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ์ ํ๋ฉด ์ธ ์ ์์ต๋๋ค.
"npmClient": "yarn"
yarn.lock
์.gitignore
์ ์ถ๊ฐํ๋ ๊ฑธ๋ก ๊ฐ์ถ ์ ์๋ ๋ฏ ํฉ๋๋ค.
packages/*/yarn.lock