๐ package.json scripts์ ์๋ช ์ฃผ๊ธฐ ์คํฌ๋ฆฝํธ, NPM LifeCycle Hook
์ด๋ฒ์ ์ด์ง์ ํ๊ฒ ๋์ด ๊ธฐ์กด ์ฝ๋๋ฅผ ์ด๋ฆฌ์ ๋ฆฌ ํ์ ํด ๋ดค์ต๋๋ค.
๋ฆฌ๋๋ถ๊ณผ Q&A๋ฅผ ํ๋ ์ค package.json scripts์ ์๋ช ์ฃผ๊ธฐ์ ๋ํ ์ด์ผ๊ธฐ๋ฅผ ์ค์น๋ฏ ๋ค์๊ณ , ๊ถ๊ธํด์ ์์ธํ ์ฐพ์๋ณด๊ฒ ๋์์ต๋๋ค.
๐ package.json์ scripts
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
์๋ next.js์์ ํํ ๋ณด๋ ์คํฌ๋ฆฝํธ ํ๋์ ๋๋ค.
ํด๋น ์คํฌ๋ฆฝํธ๋ฅผ ์คํ์ํค๊ธฐ ์ํด ์ฌ์ฉํ๋ ํจํค์ง ๋งค๋์ ์ ๋ฐ๋ผ npm run dev
/ yarn dev
/ pnpm dev
์ ๊ฐ์ด ํฐ๋ฏธ๋์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ์ต๋๋ค.
์ฌ๊ธฐ๊น์ง npm์ด ์ ๊ณตํ๋ ์คํฌ๋ฆฝํธ ์คํ ๋ฐฉ์์ผ๋ก, ํน์ ์ด๋ฆ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ํ๋ฉด npm์ด ์ด๋ฅผ ์๋์ผ๋ก ํธ์ถํ๊ฑฐ๋ ํน์ ์ด๋ฒคํธ์ ๋ฐ๋ผ ์คํ๋๋ค๋ ๊ฒ์ ๋น์ฐํ๋ค๋ ๋ฏ ์๊ณ ์์์ต๋๋ค.
์ด์ ๋ํด์ ๋น๋ ํน์ ํจํค์ง ๋ฐฐํฌ ์๋ํ๋ฅผ ์ํด js ํ์ผ์ ๋ ธ๋๋ก ์คํํ๊ฑฐ๋, && ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ด์ ์คํํ๊ณค ํ์ต๋๋ค.
๊ทธ๋ฐ๋ฐ ์ด๋ฌํ ์คํฌ๋ฆฝํธ ์๋ค์ ์๋์ผ๋ก ์คํ๋๋ ์๋ช ์ฃผ๊ธฐ ํ ์ ์ถ๊ฐํ์ฌ && ์ฐ์ฐ์๋ก ๋ช ๋ น์ด๋ฅผ ๊ธธ๊ฒ ๋์ด๋จ๋ฆฌ์ง ์์๋ ์๋ํ๋ฅผ ์ํฌ ์ ์์์ต๋๋ค.
๐ pre์ post ํ
package.json scripts์ ํน์ anyscript
๊ฐ ์๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด pre
์ post
ํค์๋๋ฅผ prefix๋ก ๋ถ์ฌ ์คํฌ๋ฆฝํธ ์คํ ์ , ์คํ ํ์ ์๋์ผ๋ก ์คํฌ๋ฆฝํธ๋ฅผ ์คํ์ํฌ ์ ์์ต๋๋ค.
"scripts": {
"preanyscript": "echo '*** RUN PRE ***'",
"anyscript": "echo '*** RUN ANYSCRIPT ***'",
"postanyscript": "echo '*** RUN POST ***'"
},
์ด์ฒ๋ผ ์ปค์คํ ์คํฌ๋ฆฝํธ ์ , ํ๋ก ๋ช ๋ น์ด๋ฅผ ์๋ ์คํํ ์ ์์ ๋ฟ๋ง ์๋๋ผ ํน์ ์ํฉ์์๋ง ๋ฐ์ํ๋ ๋ช ๊ฐ์ง ํน๋ณํ ์๋ช ์ฃผ๊ธฐ ์คํฌ๋ฆฝํธ ๋ํ ์์ต๋๋ค.
๐ ํน์ํ ์๋ช ์ฃผ๊ธฐ ์คํฌ๋ฆฝํธ
ํน์ ์ํฉ์์๋ง ๋ฐ์ํ๋ npm ์คํฌ๋ฆฝํธ๋ฅผ ์คํ ์์์ ๋ฐ๋ผ ์๊ฐ๋๋ฆฝ๋๋ค.
์์ธํ ์คํ๋ฐฉ๋ฒ๊ณผ ์๋ช ์ฃผ๊ธฐ ์คํฌ๋ฆฝํธ๋ ๋ค์ npm ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ๋ฐ๋๋๋ค.
https://docs.npmjs.com/cli/v8/using-npm/scripts#npm-start
๐ install
- preinstall: ํจํค์ง ์ค์น ์ ์ ์คํ
- install: ํจํค์ง๊ฐ ์ค์น๋ ๋ ์คํ
- postinstall: ํด๋น ํจํค์ง๊ฐ ๋ก์ปฌ์ ์ค์น๋ ํ ์คํ
- prepublishOnly: npm install ์ค ํจํค์ง๊ฐ ์ค์น๋ ๋ ์คํ (๋ฐฐํฌ์ ๊ด๋ จ ์์)
๐ publish
- prepare: ๋ฐฐํฌ ์ ์ ์คํ (Git ์ ์ฅ์์ ์ค์นํ ๋๋ ์คํ)
- prepublishOnly: ํจํค์ง ๋ฐฐํฌ ์ ์ ์คํ (prepare ๋ค์)
- publish: ํจํค์ง ๋ฐฐํฌ ์ ์คํ
- postpublish: ํจํค์ง ๋ฐฐํฌ๊ฐ ์๋ฃ๋ ํ ์คํ
์ด๋ฌํ ์๋ช ์ฃผ๊ธฐ ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ๋ค๋ฉด ํน์ ๋ฒ์ ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ํจํค์ง๋ฅผ install ํ ๋ก์ปฌ์์ ํจ์นํ ์๋ ์๊ณ , ๋ฐํํ ํจํค์ง๋ฅผ ๋ก์ปฌ์ ์ค์นํ ๋ ํ์ผ์ ์ฎ๊ธฐ๋ ์ฌํ ์์ ์ ํ๋ ๋ฑ ๋ฌด๊ถ๋ฌด์งํ ์๋ํ ๋ฐฉ๋ฒ๋ค์ ๋ ์ฌ๋ฆด ์ ์์ ๊ฒ๋๋ค.
๐ ์ฃผ์ํ ์
์ด๋ ๊ฒ ํธ๋ฆฌํ ์๋ช ์ฃผ๊ธฐ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ ๋ ์ ์ํ ์ ์ด ์์ต๋๋ค.
yarn ํน์ pnpm์์ ํน์ ์๋ช ์ฃผ๊ธฐ ์คํฌ๋ฆฝํธ๋ฅผ ์ง์ํ ์๋, ์ง์ํ์ง ์์ ์๋ ์๊ธฐ์ ์ ์ฐพ์๋ณด๊ณ ์ฌ์ฉํ์ ์ผ ๋ฉ๋๋ค.
๋๊ธ