node.js
NPM ์ด๋
by NOMADFISH
2023. 9. 23.
NPM
- npm์ node(node.js) package manager์ ์ฝ์ ์
๋๋ค. ์ด๋ฆ์์ ๋ณผ ์ ์๋ ๊ฒ๊ณผ ๊ฐ์ด ์๋๋ node.js์ ํจํค์ง(๋
๋ฆฝ๋ ๋ชจ๋)์ ๊ฐ๋ฐํ๊ณ , ๋ฐฐํฌ, ๊ณต์ ํ๊ธฐ ์ํ ๊ด๋ฆฌ ํด์ด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
- npm์ ํ์ฌ npm package์์ฒด๋ฅผ ์ด์ผ๊ธฐํ๋ ๋จ์ด๋ก๋ ์ฌ์ฉ๋๊ณ , node package manager๋ผ๋ ์ฉ์ด๋ก๋ ์ฌ์ฉ ๋ฉ๋๋ค.
- ์ด๋ฆ์ด ๋งํด์ฃผ๋ ๊ฒ๊ณผ ๊ฐ์ด ๋น์ฐํ node.js ํ๊ฒฝ์์์ ๋์ ํฉ๋๋ค.
Package ์ Module
- ์ 2๊ฐ์ง ๋จ์ด๊ฐ ๋งค๋ฒ ๋์ค๊ธฐ ๋๋ฌธ์ ํผ๋์ด ์์ ์ ์์ต๋๋ค. ์ด ๋๊ฐ์ง ๊ฐ๋
์ ์ธ์ด๋ง๋ค ์ฝ๊ฐ์ฉ์ ๋ค๋ฅผ ์ ์์ง๋ง ๋์ฒด์ ์ผ๋ก Scale์ ์ฐจ์ด์
๋๋ค.
- Module: ์์ ๋จ์๋ก ๋
๋ฆฝ๋ ํ๋์ ๊ธฐ๋ฅ์ ์ํํฉ๋๋ค.
- Package: Module๋ค์ด ์กฐํฉ๋์ด Module๋ณด๋ค ๋ณต์ก์ ์ธ ๊ธฐ๋ฅ์ ์ํํฉ๋๋ค. ํ์ง๋ง ์ญ์ ๊ธฐ๋ฅ ์์ฒด๋ ์ผ๊ด์ ์ธ ๊ธฐ๋ฅ ์
๋๋ค.
- ์๋ฅผ ๋ค์ด ๋์๋ฅผ ๋ํ๊ธฐ, ๋นผ๊ธฐ, ๋๋๊ธฐ, ๊ณฑํ๊ธฐ ํ๋ Module์ ๊ฐ๊ฐ ๋ง๋ค์๋ค๊ณ ๊ฐ์ ํ๊ณ ์ด๋ฅผ ํ์ผ๋ก ์ ์ฅํ๋ค๊ณ ๊ฐ์ ํฉ์๋ค.
- add.js, substract.js, multiple.js, divide.js
function substractNumbers(a, b) {
return a - b;
}
function multipleNumbers(a, b) {
return a * b;
}
function divideNumbers(a, b) {
return a / b;
}
function addNumbers(a, b) {
return a + b;
}
- ์ด๋ ๊ฒ 4๊ฐ์ ๋ชจ๋์ด ๋ง๋ค์ด ์ก์ต๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ๋ค์ ํ๋๋ก ๋ฌถ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ cal.js๋ผ๊ณ ์ ์ฅ ํฉ๋๋ค. ์๋ ์ฝ๋๋ ๋จ์ํ ๊ฐ ํ์ผ์ ํ๋๋ก ๋ฌถ์ด export๋ง ํ์ง๋ง, ํ๋์ ํจ์๋ก ๋ง๋ค์๋ ์์ต๋๋ค.
- javascript export ์ฐธ์กฐ
export * from 'add.js'
export * from 'substract.js'
export * from 'multiple.js'
export * from 'divide.js'
- cal์ add, subscract, multiple, divide ๋ชจ๋๋ฅผ ๋ฌถ์ด ๋ง๋ค์ด์ง ํ๋์ package์ ๊ฐ์ ์ญํ ์ ํฉ๋๋ค.
- ์ด๊ฒ์ npm package๋ก ๋ง๋ ๋ค๋ฉด npm install cal ์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ์ค์นํ๊ณ ์ฌ์ฉํ๋ฉด 4๊ฐ์ง ๋ชจ๋์ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ํ์ง๋ง ๊ผญ ์ด๋ ๊ฒ ๋ณตํฉ์ ์ธ ๊ธฐ๋ฅ์ผ๋ก package๋ฅผ ๋ง๋ค ํ์๋ ์์ต๋๋ค.
- copyํ๋ ๊ธฐ๋ฅ๋ง ์๋ npm ์
๋๋ค.
- ๋ณตํฉ์ ์ด์ง ์์ ๋จ์ํ ๋ชจ๋์ด์ง๋ง, ํธ๋ฆฌ์ฑ์ด ๋์ ๊ฒ๋ค๋ ํ๋์ npm package๋ก ๋ง๋ค ์ ์์ต๋๋ค.
NPM Package์ ์ฌ์ฉ ์์
- ์ผ๋จ ๊ฐ์ฅ ํํ๊ฒ ์ฌ์ฉ๋๋ react ํ๋ก์ ํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก npm์ด ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง ์ด์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
- https://github.com/direbunny/calculator → github์ ์๋ react๋ก ๋ง๋ ๊ฐ๋จํ ๊ณ์ฐ๊ธฐ ์
๋๋ค.
- package.json ํ์ผ์ ์ด์ด ๋ด
์๋ค.
{
"name": "calculator",
"version": "0.1.0",
"license": "MIT",
"homepage": "http://ahfarmer.github.io/calculator",
"devDependencies": {
"chai": "^4.2.0",
"gh-pages": "^2.0.1",
"prettier": "^1.17.1",
"react-scripts": "^3.0.1"
},
"dependencies": {
"big.js": "^5.2.2",
"github-fork-ribbon-css": "^0.2.1",
"react": "^16.8.6",
"react-dom": "^16.8.6"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject",
"deploy": "gh-pages -d build"
},
"prettier": {
"trailingComma": "all"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
- ์์ ๊ฐ์ json ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ์ด์ค dependencies ํญ๋ชฉ์ ๋ณด๋ฉด
"big.js": "^5.2.2",
"github-fork-ribbon-css": "^0.2.1",
"react": "^16.8.6",
"react-dom": "^16.8.6"
- dependencies ๋ ์ด ํ๋ก์ ํธ๊ฐ ์์กดํ๊ณ ์๋ npm package์
๋๋ค. 4๊ฐ์ npm์ ์ด ํ๋ก์ ํธ๊ฐ ์ฌ์ฉํ๊ณ ์์์ ์๋ฏธ ํฉ๋๋ค.
- devDependencies ๋ฅผ ํ์ธํด ๋ด
์๋ค.
"chai": "^4.2.0",
"gh-pages": "^2.0.1",
"prettier": "^1.17.1",
"react-scripts": "^3.0.1"
- devDependencies ๋ ์ด ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์ํด ์์กดํ๊ณ ์๋ npm package์
๋๋ค. 4๊ฐ์ npm์ ์ด ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์ํด ์ฌ์ฉํ๊ณ ์์์ ์๋ฏธ ํฉ๋๋ค.
- ์ฃผ๊ณ ๊ฐ๋ฐ ๊ณผ์ ์์ ์ฌ์ฉ๋๋ ์ปดํ์ผ์ด๋ code lint๋ฑ์ ์ํด์ ์ฌ์ฉ๋๋ ๋ชจ๋์
๋๋ค.
- devDependencies ํ๋ก์ ํธ ๊ฐ๋ฐ๋ฅผ ์ํด์๋ง ์ฌ์ฉ๋ฉ๋๋ค. ์ ํ๋ก์ ํธ์์ react๋ก ๋ง๋ค์ด์ง ๊ณ์ฐ๊ธฐ๋ฅผ ๋์ ์ํฌ๋๋ ์ 4๊ฐ์ npm package์ ๋ชจ๋์ด๋ ์ฝ๋๋ ์ ํ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
๐ NPM ์ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
- NPM์ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ์ ๊ฐ๋จํฉ๋๋ค. install ํํ importํ์ฌ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
- NPM์ install ํ๊ธฐ ์ํด์ ์ฌ์ฉ๋๋ ํ๋ก๊ทธ๋จ์ ๋ํ์ ์ผ๋ก 2๊ฐ์ง๊ฐ ์์ต๋๋ค.
- ํ๋๊ฐ ๋ฐ๋ก npm ์ด๊ณ , ๋ค๋ฅธ ํ๋๊ฐ yarn ์
๋๋ค.
- ์๋ ๊ฐ๊ฐ์ ๋ช
๋ น์ด ์
๋๋ค.
- NPM ๊ธฐ์ค์ผ๋ก ์ค์นํด์ ์ฌ์ฉํ๊ณ ์ ํ๋ package๋ฅผ npm install [package] ๋ก ์ค์น ํฉ๋๋ค.
- ์ค์นํ package๋ฅผ ์ฝ๋์์ importํด์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
const { now } = require("time");
console.log("Now:", now());
- ES6 ์ด์ Format์ ์ฌ์ฉํ๋ค๋ฉด import ํค์๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
import { now } from "./time";
console.log("Now:", now());
'node.js' ์นดํ
๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ