
npm์ ๊ด๋ฆฌ ํด, npx๋ npm์ ์๋ ์คํ ํด์ด๋ค. npm ํจํค์ง๋ฅผ ์ค์นํ์ง ์๊ณ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๋๊ตฌ๋ก, ํ๋ก์ ํธ์ ์ถ๊ฐํ๊ฑฐ๋ ์ ์ญ ํจํค์ง๋ก ์ถ๊ฐํ์ง ์๊ณ , npx๋ฅผ ์ด์ฉํ์ฌ ๋ฐ๋ก ์คํํ ์ ์๋ค.
npx is CLI tool.
npx๋ ํจํค์ง ๊ด๋ฆฌ ๋ชจ๋์ด ์๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ํจํค์ง ๊ด๋ฆฌ ๋ชจ๋์ธ npm(Node Package Module)์ 5.2.0 ๋ฒ์ ๋ถํฐ ์๋ก ์ถ๊ฐ๋ CLI ๋๊ตฌ๋ค. npm์ ์ข ๋ ํธํ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด์ npm์์ ์ ๊ณตํ๋ค. ๋ฐ๋ผ์ npm@5.2.0 ์ด์ ๋ฒ์ ๋ง ๊น๋ ค ์๋ค๋ฉด npx ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ ์ ์๋ค. npx๋ npm ๋ ์ง์คํธ๋ฆฌ์ ์ฌ๋ผ๊ฐ์๋ ํจํค์ง๋ฅผ ์ฝ๊ฒ ์ค์นํ๊ณ ๊ด๋ฆฌํ ์ ์๋๋ก ํ๋ค. npm์ ์ข ๋ ํธํ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด ํ์ํ npx๋ npm์ ํตํด ์ค์นํ๋ ๋ชจ๋ ์ข ๋ฅ์ Node.js ๊ธฐ๋ฐ์ ํ์ผ๋ค์ ๊ต์ฅํ ๊ฐ๋จํ๊ฒ ์ค์นํ๊ณ ์คํํ ์ ์๊ฒ ๋์์ค๋ค.
Why npx?
๊ณผ๊ฑฐ npm์ผ๋ก ํจํค์ง๋ฅผ ์ค์นํ ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์๋ค.
- ์ ์ญ์ผ๋ก ํจํค์ง๋ฅผ ์ค์นํ์ฌ ์์กด์ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ ์ฒด์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ
- ํน์ ํ๋ก์ ํธ์๋ง ์์กด์ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋ ๋ฐฉ๋ฒ
์ ์ญํ๊ฒฝ๊ณผ ๋ก์ปฌํ๊ฒฝ ๊ฐ๊ฐ์์ ์์กด์ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ์ค์น๋ ์ฑ ๊ด๋ฆฌํ๋ฉด, ํจํค์ง๊ฐ ์ ๋ฐ์ดํธ๊ฐ ๋ ๋๋ง๋ค ๋ฐ๋ก ๊ด๋ฆฌํด์ค๋ค๋ฉด ๊ต์ฅํ ๋ฒ๊ฑฐ๋ก์ธ ๊ฒ์ด๋ค. ๊ฐ๋ฉ์ด๋ ๊ต์ฅํ ๋ณํ๋ฌด์ํ ์๋ฐ์คํฌ๋ฆฝํธ ์ํ๊ณ์ธ๋ฐ ๋ง์ด๋ค. ํ์ง๋ง ์ด๋ฌํ ๋ฌธ์ ๋ 'npx'์ ํตํด ํด๊ฒฐํ ์ ์๋ค. ๊ธฐ์กด์ npm ์ค์น ๋ฐฉ๋ฒ๊ณผ๋ ๋ค๋ฅด๊ฒ, npx๋ ์ผ์ผ์ด ์ค์น, ์คํ, ์ ๊ฑฐ๋ฅผ ํ ํ์ ์์ด, ์ผํ์ฑ์ผ๋ก ์ํ๋ ํจํค์ง๋ฅผ npm ๋ ์ง์คํธ๋ฆฌ์ ์ ๊ทผํด์ ์คํ์ํค๊ณ ์ค์นํ๋ค. ํจํค์ง๋ฅผ ์ค์นํ๊ณ ์ ๋ฐ์ดํธ๋ฅผ ํ์ง ์๋๋ผ๋ npm ๋ ์ง์คํธ๋ฆฌ์ ์ฌ๋ผ๊ฐ ์๋ ์ต์ ๋ฒ์ ์ ์คํ์ํค๊ณ ์ค์น๋ง ์ํค๋ฉด ๋์ด๊ธฐ ๋๋ฌธ์ ๊ต์ฅํ ๊ฐํธํ๋ค.
npx์ ์ฅ์
1) ์ปดํจํฐ ๊ณต๊ฐ์ ๋ญ๋นํ์ง ์๋๋ค.
2) ์ค์น๋ฅผ ์คํํ ๋ ๋ง๋ค ์๋ก ๋ค์ด๋ก๋ํ๊ธฐ ๋๋ฌธ์ ํญ์ ์ต์ ์ํ๋ค.
When to use?
npx๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ ์ฉํ๊ฒ ํ์ฉํ ์ ์๋ค.
- npm run-script๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ก์ปฌ์ ์ค์น๋ ํจํค์ง๋ฅผ ์คํํ ๊ฒฝ์ฐ
- ์ผํ์ฑ ๋ช ๋ น์ผ๋ก ํจํค์ง๋ฅผ ์คํํ ๊ฒฝ์ฐ
- ํน์ ๋ ธ๋ ๋ฒ์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ๊ฒฝ์ฐ
- gist-based scripts๋ฅผ ์คํํ ๊ฒฝ์ฐ
1. npm run-script๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , ๋ก์ปฌ์ ์ค์น๋ ํจํค์ง ์คํ
{
"devDependencies": {
"cowsay": "^1.4.0"
}
}
$ npx cowsay hi from npx
๋ก์ปฌ๋ก ์ค์น๋ ํจํค์ง๋ค์ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ค. ๋ง์ฝ ํ๋ก์ ํธ์ cowsay๋ผ๋ ํจํค์ง๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด, npx cowsay๋ง ์ ๋ ฅํ๋ฉด ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ค.
2. ์ผํ์ฑ ๋ช ๋ น์ผ๋ก ํจํค์ง ์คํ
$ npx create-react-app myProject
๋ก์ปฌ์ ์กด์ฌํ์ง ์๋ ํจํค์ง๋ฅผ ์คํํ ๋๋ ๊ฐ๋ฅํ๋ค. npx๋ ์ฐ์ ์ ๋ก์ปฌ์ ํจํค์ง๊ฐ ์ค์น๋์ด์๋์ง ํ์ ํ ํ ํจํค์ง๊ฐ ์กด์ฌํ์ง ์๋๋ค๋ฉด, npm ๋ ์ง์คํธ๋ฆฌ์์ ํด๋น ์ด๋ฆ์ ํจํค์ง๊ฐ ์๋์ผ๋ก ์ค์น๋๊ณ ํธ์ถ๋๋ค. ์์ ์ด ๋๋๋ฉด, ์ค์น๋ ํจํค์ง๋ ๋ก์ปฌ ์ด๋์๋ ์์ ๊ฒ์ด๊ณ , ๋ฐ๋ผ์ ์ฅ๊ธฐ์ ์ผ๋ก ์ค์ผ์ ๋ํด ๊ฑฑ์ ํ ํ์๊ฐ ์๋ค.
3. ๋ค๋ฅธ Node.js ๋ฒ์ ์ผ๋ก ์คํ
$ npx node@6 -v
$ npx -p node@7 -- node -v
// npx -p node @ <version> node -v'
// ๋
ธ๋ ๋ฒ์ ์ ์ผํ์ฑ ์คํ์ ์ํด ์ฌ์ฉ
4. gist-based-script ์คํ
$ npx {gist url}
Github gist์ ์ฌ๋ผ์จ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ๋ ์ฌ์ฉํ ์ ์๋ค.
package-lock.json
ํ๋ก์ ํธ์ ์์กด์ฑ์ ์ถ๊ฐํ๋ฉด package-lock.json์ด๋ผ๋ ํ์ผ์ด ์์ฑ๋๋ค. ํ๋ก์ ํธ์ ์์กด์ฑ์ ์ถ๊ฐํ๋ฉด ์๋์ผ๋ก ‘^์ต์ ๋ฒ์ ’์ผ๋ก ์ถ๊ฐ๊ฐ ๋๋๋ฐ, ์์กด์ฑ ๋ฒ์ ์ด ๊ฐ์๊ธฐ ๋ณ๊ฒฝ๋์ง ์๋๋ก, ์ค์น๋ ๋ฒ์ ์ ๊ณ ์ ํ๋ ์ญํ ์ ํ๋ค.
"type" : "module" in package.json
package.jsonํ์ผ์ "type":"module"์ ์ถ๊ฐํด์ฃผ๋ฉด ES module์ ์ฌ์ฉํ ์ ์๋ค.
'๐ Back > ๐งฉ Node.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ์นํฉ ์ด๋ฏธ์ง ๋ถ๋ฌ์ค๊ธฐ ์คํจ ์ด์ : ์์ํ ํด๋(static) (0) | 2021.03.22 |
|---|---|
| EJS: Node js ๋ทฐ์์ง (html๋๋๋ง) (0) | 2021.03.18 |
| Aws s3 (0) | 2021.03.09 |
| Multer: ํ์ผ ์ ์ฅ ๋ฏธ๋ค์จ์ด (0) | 2021.02.14 |
| ์นํฉ(Webpack) ์ฐ๋ ์ด์ / ์ฌ์ฉ ๋ฐฉ๋ฒ (0) | 2021.02.13 |