1. NPM์ด๋
- Node Package Manager
- Node.js ํ๋ก์ ํธ๋ฅผ ๊ด๋ฆฌํ๋ ํ์์ ์ธ ๋๊ตฌ
- ๊ตฌ์ฑ: ์จ๋ผ์ธ ์ ์ฅ์ + ์ปค๋งจ๋๋ผ์ธ ๋๊ตฌ
- ์จ๋ผ์ธ ์ ์ฅ์: ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๊ตฌ๋ค์ด ์ ๋ก๋๋๋ ์ ์ฅ์
- ์ปค๋งจ๋๋ผ์ธ ๋๊ตฌ: ํ๋ก์ ํธ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ค์ํ ๋ช ๋ น์ด ์ ๊ณต
2. NPM ์ฌ์ฉํด ๋ณด๊ธฐ
- NPM์ ์ฌ์ฉ = NPM ์ปค๋งจ๋๋ผ์ธ ๋๊ตฌ์ ์ฌ์ฉ๋ฒ์ ์ตํ๋ ๊ฒ
- ํ๋ก์ ํธ ๋๋ ํฐ๋ฆฌ๋ฅผ ์์ฑํ๊ณ , ํด๋น ๋๋ ํฐ๋ฆฌ ์์์ $npm init ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋ช ๋ฒ์ ์ง๋ฌธ์ ํตํด package.json ์ด๋ผ๋ ํ์ผ์ ๋ง๋ค์ด ์ฃผ๊ณ , ์ด ๋๋ ํฐ๋ฆฌ๋ Node.js ํ๋ก์ ํธ๊ฐ ๋๋ค.
2-1. package.json
- ํ๋ก์ ํธ ๊ด๋ จ ์ ๋ณด๋ค์ด ์ ์ฅ๋๋ ํ์ผ, ์ด ํ์ผ์ ์ง์ ์์ ํ๊ฑฐ๋ npm ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ ์ ๋ณด๋ฅผ ์์ ํ ์ ์๋ค.
- version, name, description, scripts, dependencies(์์กด์ฑ ํจํค์ง๋ค), devDependencies, ...
- NPM์ ์ด์ฉํ๋ฉด ์์กด์ฑ์ ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์๋ค.
- ์์กด์ฑ: ํ๋ก์ ํธ ๋ด์์ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ: ํน์ ๊ธฐ๋ฅ์ ์ํํ๋ ์ฝ๋์ ๋ฌถ์, Node.js์์๋ ํจํค์ง๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.
2-2. npm install ๋ช ๋ น์ด
- $npm install (npm i) ๋ช ๋ น์ด๋ฅผ ํตํด ํ๋ก์ ํธ ์์กด์ฑ์ ๊ด๋ฆฌํ ์ ์๋ค.
- ์์กด์ฑ ์ถ๊ฐ, ์์กด์ฑ ๋ด๋ ค๋ฐ๊ธฐ, ๊ฐ๋ฐ์ฉ ์์กด์ฑ ์ถ๊ฐ, ์ ์ญ ํจํค์ง ์ถ๊ฐ ๋ฑ์ ๊ธฐ๋ฅ ์ํ
- $npm install [package-name]
- ํ์ํ ํจํค์ง๋ฅผ ํ๋ก์ ํธ์ ์ถ๊ฐํ ์ ์๋ค.
- ์ถ๊ฐ๋ ํจํค์ง๋ package.json์ dependencies์์ ์ถ๊ฐ๋๋ฉฐ, node_modules ๋๋ ํฐ๋ฆฌ์ ์ ์ฅ๋จ
- $npm install [package-name] --save-dev
- npm์ ๊ฐ๋ฐ์ฉ ์์กด์ฑ์ ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌํ ์ ์๋ค.
- --save-dev ์ต์ ์ ํตํด ๊ฐ๋ฐ์ฉ ์์กด์ฑ(๋ฐฐํฌ ์ ๊น์ง๋ง ์ฌ์ฉํ๋ ์์กด์ฑ)์ ์ถ๊ฐํ ์ ์๋ค.
- ๊ฐ๋ฐ์ฉ ์์กด์ฑ์ package.json์ devDependencies์ ์ถ๊ฐ๋จ
- ๊ธฐ๋ณธ์ ์ผ๋ก node_modules ๋๋ ํฐ๋ฆฌ๋ ์ฝ๋ ๊ด๋ฆฌ์ ๋ฐฐํฌ ์์ ์
๋ก๋ ํ์ง ์๋๋ค.
- ์์กด์ฑ์ด ๋ง์์ง๋ฉด ์ฉ๋์ด ๋๋ฌด ์ปค์ง๊ณ , OS๋ณ๋ก ์คํ๋๋ ์ฝ๋๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ๊ฐ ์กด์ฌ
- $npn install ๋ช ๋ น์ด๋ฅผ ์๋ฌด ์ต์ ์์ด ์ฌ์ฉํ๋ฉด, package.json์ ์ ์๋ dependencies์ devDependencies์ ์์กด์ฑ์ node_modules ๋๋ ํฐ๋ฆฌ์ ๋ด๋ ค๋ฐ์
- $npm install --production
- ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌํ ๋์๋ ๊ฐ๋ฐ์ฉ ์์กด์ฑ์ ๊ฐ์ด ํฌํจํ ํ์๊ฐ ์์
- package.json์ dependencies๋ง node_modules์ ๋ด๋ ค๋ฐ์
- $npm install [package-name]@version
- ํจํค์ง ๋ฒ์ ์ง์
- package-lock.json
- ํ๋ก์ ํธ์ ์์กด์ฑ์ ์ถ๊ฐํ๋ฉด ์๋์ผ๋ก ์์ฑ๋๋ ํ์ผ
- ์์กด์ฑ ๋ฒ์ ์ด ๊ฐ์๊ธฐ ๋ณ๊ฒฝ๋์ง ์๋๋ก ์ค์น๋ ๋ฒ์ ์ ๊ณ ์ ํ๋ ์ญํ
- $npm install [package-name] --global
- ํจํค์ง๋ฅผ ์ ์ญ ํจํค์ง ๋๋ ํฐ๋ฆฌ์ ๋ด๋ ค๋ฐ์
- ์ปค๋งจ๋๋ผ์ธ ๋๊ตฌ๋ค์ ์ฃผ๋ก ์ ์ญ ํจํค์ง๋ก ์ถ๊ฐํด์ ์ฌ์ฉ
2-3. ๋ก์ปฌ ํจํค์ง์ ์ ์ญ ํจํค์ง
- ๋ก์ปฌ ํจํค์ง: package.json์ ์ ์ธ๋์ด ์๊ณ , node_modules์ ์ ์ฅ๋ ํจํค์ง
- ์ ์ญ ํจํค์ง: npm install -g๋ฅผ ํตํด ๋ด๋ ค๋ฐ์, ์ ์ญ ์ ์ฅ์์ ์ ์ฅ๋ ํจํค์ง
- ํ๋ก์ ํธ ์์กด์ฑ์ด package.json ๋ด์ ๋ช ์์ ์ผ๋ก ์ ์ธ๋์ด ์๋ ๊ฒ์ด ํ๋ก์ ํธ ๊ด๋ฆฌ์ ์ข์ ๋ฐฉํฅ
2-4. $npm remove
- $npm remove [package-name]
- ์์กด์ฑ ํจํค์ง๋ฅผ ์ญ์ ํ ์ ์๋ค.
- package.json์ dependencies์ devDependencies์์ ์ญ์ ํ๊ณ , node_modules์์๋ ์ญ์
2-5. ์คํฌ๋ฆฝํธ ์คํํ๊ธฐ
- ์คํฌ๋ฆฝํธ: ๊ฐ๋จํ ๋์์ ์ํํ๋ ์ฝ๋
- package.json์ scripts์ ์ ์ธ๋ ์คํฌ๋ฆฝํธ๋ฅผ npm run [script-name] ๋ช ๋ น์ด๋ก ์คํ
- npm script ๋ด์์๋ ์์กด์ฑ ํจํค์ง๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
2-6. ์์ฃผ ์ฌ์ฉ๋๋ ์คํฌ๋ฆฝํธ
- npm test: ์ฝ๋ ์ ๋ ํ ์คํธ ๋ฑ์ ์ฌ์ฉ
- npm start: ํ๋ก์ ํธ ์คํ
- npm stop: ํ๋ก์ ํธ ์ข ๋ฃ
2-7. NPM ์์ฝ
๋ช ๋ น์ด | npm init | ํ๋ก์ ํธ ์์ฑ |
npm install | ์์กด์ฑ ์ถ๊ฐ, ์ค์น | |
npm remove | ์์กด์ฑ ์ญ์ | |
npm run | ์คํฌ๋ฆฝํธ ์คํ | |
์ฃผ์ ํ์ผ/๋๋ ํฐ๋ฆฌ | node_modules | ํ๋ก์ ํธ ์์กด์ฑ ์ ์ฅ ๋๋ ํฐ๋ฆฌ |
package.json | ํ๋ก์ ํธ ๊ด๋ฆฌ (๋ฒ์ , ์์กด์ฑ, ์คํฌ๋ฆฝํธ, ...) | |
package-lock.json | ์์กด์ฑ ๋ฒ์ ํ์ธ |
3. NPX
- npm ํจํค์ง๋ฅผ ์ค์นํ์ง ์๊ณ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๋๊ตฌ
- ํ๋ก์ ํธ์ ์ถ๊ฐํ๊ฑฐ๋ ์ ์ญ ํจํค์ง๋ก ์ถ๊ฐํ์ง ์๊ณ , npx๋ฅผ ์ด์ฉํ์ฌ ๋ฐ๋ก ์คํํ ์ ์์
- Node.js์ ํน์ ๋ฒ์ ์ผ๋ก ์คํํ ์ ์์ผ๋ฏ๋ก, ํ๋ก์ ํธ์ Node.js ๋ฒ์ ๋ณ ์คํํ๊ฒฝ์ ํ์ธํ ๋ ์ ์ฉ
- gitbub gist ์ฝ๋ ์คํ ๊ฐ๋ฅ
4. Node.js์ ๋ชจ๋
- ๋ชจ๋(Module) = ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ๊ธฐ ์ํ ๋ฐฉ๋ฒ
- ํจํค์ง = ๋ชจ๋์ ๋ชจ์
- npm ํจํค์ง๋ค์ ๋ง์ ๋ชจ๋์ ํฌํจํ๊ณ ์๋ ์ฝ๋ ๋ชจ์
- Node.js์ ๊ธฐ๋ณธ ์ ๊ณต ๋ชจ๋
4-1. Node.js์ ๊ธฐ๋ณธ ์ ๊ณต ๋ชจ๋
- console
- log, warn, error ํจ์๋ก ๋ก๊ทธ ๋ ๋ฒจ ํ์
- time, timeLog, timeEnd ํจ์๋ก ์๊ฐ ์ถ์
- process
- ํ์ฌ ํ๋ก์ธ์ค ๊ด๋ จ ๊ธฐ๋ฅ ์ ๊ณต
- ์คํ ํ๊ฒฝ ๋ฐ ๋ณ์ ๊ด๋ จ ๊ฐ ์ ๊ณต (arch, argv, env ๋ฑ)
- ํ๋ก์ธ์ค ๋์ ๊ด๋ จ ํจ์ ์ ๊ณต (abort, kill, exit ๋ฑ)
- fs
- ํ์ผ ์ ์ถ๋ ฅ์ ์ํด ์ฌ์ฉ
- readFile, writeFile ํจ์๋ก ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ
- -Sync ํจ์๋ก ๋๊ธฐ์ ์ผ๋ก ๋์ํ ์ ์๊ฒ ํ๋ค.
- watch๋ก ํ์ผ/๋๋ ํฐ๋ฆฌ ๋ณ๊ฒฝ ์ด๋ฒคํธ ๊ฐ์ง
- http
- http ์๋ฒ, ํด๋ผ์ด์ธํธ๋ฅผ ์ํด ์ฌ์ฉ
- createServer ํจ์๋ก ์๋ฒ ์์ฑ
- Request ํจ์๋ก http ์์ฒญ ์์ฑ
- ๊ธฐํ: url, os, Path, crypto, ...
5. ๋ชจ๋์ ์์ฑ๊ณผ ์ฌ์ฉ
5-1. ๋ชจ๋์ ์์ฑ
module.exports = {
name,
age,
nationality,
};
- ๋ชจ๋์ด load ๋ ๋ ์ฌ์ฉ๋ ๊ฐ์ module.exports๋ก ๋ด๋ณด๋ธ๋ค.
exports.name = name;
exports.age = age;
exports.nationality = nationality;
- ๋ชจ๋์ object๋ก ๋ง๋ค๊ณ , ๊ฐ key-value๋ฅผ ์ง์ ํด์ ๋ด๋ณด๋ผ ์ ์๋ค.
module.exports = (name, age, nationality) => {
return {
name,
age,
nationality,
};
}
- ๋ชจ๋์ ํจ์๋ก ๋ง๋ค์ด์ ๋ชจ๋ ์ฌ์ฉ ์์ ๊ฐ์ ์ ํ ์ ์๊ฒ ๋ด๋ณด๋ผ ์ ์๋ค.
5-2. ๋ชจ๋์ ์ฌ์ฉ
- require ํจ์๋ฅผ ํตํด ๋ชจ๋์ load
- ์์กด์ฑ ํจํค์ง, ์ง์ ์์ฑํ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅ
- requireํ ๋ ๋ชจ๋ ์ฝ๋๊ฐ ์คํ๋๋ค. Node.js์ ๋ชจ๋์ ์ฒซ require ์์ ์คํ ํ, ๊ทธ ๋ค์๋ถํฐ๋ ๋ฉ๋ชจ๋ฆฌ์ cache๋ ๋ชจ๋์ ์ฌ์ฉํ๋ค. ๋ค๋ฅธ ํ์ผ์์ ๋ require ํ๋ค๊ณ ํด์ ๋ชจ๋์ด ๋ ๋ฒ ์คํํ์ง ์๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ ์ฝ๋๋ฅผ ์ฌ๋ฌ ๋ฒ ์คํํ๊ธฐ ์ํด์๋ ํจ์ํ ๋ชจ๋๋ก ์์ฑ
1) npm ํจํค์ง
const dayjs = require('dayjs');
console.log(dayjs());
- ์์กด์ฑ ํจํค์ง๋ค์ require('package-name') ๋ก load ํ ์ ์๋ค.
- ํจํค์ง๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด node_modules ์ ๋ด๋ ค๋ฐ์์ ธ ์์ด์ผ ํ๋ค.
2) ์ง์ ์์ฑํ ๋ชจ๋
const myModule = require('./my-module');
console.log(myModule);
- ์ง์ ์์ฑํ ๋ชจ๋์ ํ์ฌ ์์ฑ์ค์ธ ํ์ผ๊ณผ์ ์๋ ๋๋ ํฐ๋ฆฌ๋ก load
- my-module์ด .js ํ์ผ์ธ ๊ฒฝ์ฐ ํด๋น ํ์ผ load
- my-module์ด ๋๋ ํฐ๋ฆฌ์ธ ๊ฒฝ์ฐ my-module/index.js ํ์ผ์ด load
3) ํจ์ํ ๋ชจ๋
const myFunctionModule = require('./my-function-module');
console.log(myFunctionModule(name, age, nationality));
- ํจ์ํ ๋ชจ๋์ loadํ ๊ฒฝ์ฐ ๋ชจ๋์ด ๋ฐ๋ก ์คํ๋์ง ์๋๋ค.
- ํ์ํ ์์ ์ load๋ ํจ์๋ฅผ ์คํํ์ฌ ๋ชจ๋์ ์ฌ์ฉํ ์ ์๋ค.
4) json ํ์ผ
// my-data.json์ ๊ฐ์ง๊ณ ์์
const myData = require('./my-data');
console.log(myData);
- object๋ก ์๋ ํ์ฑ
โจ ์์ฝ
module.exports๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋์ ์์ฑํ ์ ์๋ค.
require๋ฅผ ์ฌ์ฉํ์ฌ ์์กด์ฑ ํจํค์ง, ๋ชจ๋, json ํ์ผ์ ์ฌ์ฉํ ์ ์๋ค.
๋ชจ๋์ ์ฒซ require ์์๋ง ์คํํ๊ณ cache ๋๋ฏ๋ก, ์ฌ๋ฌ ๋ฒ ์คํํ ๋ชจ๋์ ํจ์ํ์ผ๋ก ์์ฑํด์ผ ํ๋ค.
6. ES Module
- ES6์์ ๋ฑ์ฅํ JavaScript์ ๊ณต์์ ์ธ ํ์ค ๋ชจ๋
- ES Module๊ณผ commonjs(Node.js์ ๋ชจ๋)๋ ๋ฌธ๋ฒ๊ณผ ๊ธฐ๋ณธ์ ์ธ ๋์ ๋ฐฉ์์ด ๋ค๋ฅด๋ค.
- commonjs๋ module.exports์ require๋ก ๋ชจ๋์ ๋ง๋ค๊ณ ์ฌ์ฉ
- ES Module์ export์ import๋ก ๋ชจ๋์ ๋ง๋ค๊ณ ์ฌ์ฉ
- ํ์ฌ ES Module์ Node.js์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ์ ์ ์ฝ์ด ๋ง๋ค.
'elice > WIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[week_06] Express.js์ REST API | Middleware, JSON, Postman (0) | 2022.02.15 |
---|---|
[week_06] ์น๊ณผ Express.js | ์น์ ์ดํด, ํ๋ ์์ํฌ, Express.js์ ๊ตฌ์กฐ, ๋์๋ฐฉ์ (0) | 2022.02.14 |
[week_06] Node.js ๊ธฐ์ด | Node.js์ ์ดํด, ํน์ง, ES6, ๋น๋๊ธฐ ์ฝ๋ฉ, ์ด๋ฒคํธ ๋ฃจํ (0) | 2022.02.12 |
[week_05] async/await๊ณผ API (0) | 2022.02.09 |
[week_05] ๋น๋๊ธฐ ํต์ ๊ณผ Promise (0) | 2022.02.07 |