npm μ΄μ©ν΄ ν¨ν€μ§ κ°μ Έμ€κΈ° ( μ΄μ 곡λΆμμ μ΄μ΄μ )
package.json νμΌμ΄ λ€μ΄ μλ ν΄λμμ npm i express
λ₯Ό μ
λ ₯ν κ²°κ³Ό, μλμ κ°μ΄ package.json νμΌμ express dependenciesκ° μΆκ°λ κ²μ νμΈν μ μλ€. μ΄λ ν΄λΉ νλ‘μ νΈλ₯Ό μ€ννκΈ° μν΄μλ expressκ° νμν¨μ λνλΈλ€.
"dependencies": {
"express": "^4.17.1"
}
ννΈ, VS code ν°λ―Έλμ npm i express
λ₯Ό μ
λ ₯ν λ μΆκ°λ node_modules ν΄λμ package-lock.json νμΌμ μΌλΆλ¬ μμ ν ν, ν°λ―Έλμμ npm i
λ§μ μ
λ ₯ν΄λ μμ νλ ν΄λλ€μ΄ μλμΌλ‘ λ€μ μΆκ°λλ κ²μ νμΈν μ μλ€.
μ΄λ μ΄μ μ npm i expressλ₯Ό μ
λ ₯νμ λ package.json νμΌμ dependenciesμ expressκ° μΆκ°λμκΈ° λλ¬Έμ΄λ€. κ·Έ ν npm i
λ§μ μ
λ ₯ν΄λ, npmμ μμμ package.json νμΌμ dependenciesλ₯Ό λΆμ
νμ¬, νλ‘κ·Έλ¨μ κ°λνλ λ° νμν λͺ¨λ(ν¨ν€μ§)λ€μ λ€μ΄λ°λλ€.
μ΄ λλ¬Έμ νμ μ ν λ μ©λμ΄ ν° node_modules ν΄λλ₯Ό κΉνλΈμ μ λ‘λ νμ§ μμλ λλ€. ν°λ―Έλμ npm iλ§ μ λ ₯νλ©΄ νμν ν¨ν€μ§λ€μ μ λΆ μ€μΉν μ μκΈ° λλ¬Έμ΄λ€. λ°λΌμ, νλ‘μ νΈλ₯Ό 곡μ νκ³ μΆλ€λ©΄, package.jsonκ³Ό index.js νμΌλ§μ 곡μ νλ©΄ λλ€.
μ΄λ₯Ό μν΄μλ node_modules ν΄λκ° κΉνλΈμ μ¬λΌκ°μ§ μλλ‘ μ¨κ²¨μ€μΌ νλ€. νλ‘μ νΈ ν΄λμ .gitignore
ν΄λλ₯Ό λ§λ ν /node_modules
λ₯Ό μΆκ°νλλ‘ νλ€.
π μ£Όμ !
npm install [ν¨ν€μ§ μ΄λ¦]
λ₯Ό μνν λλ package.json νμΌμ λ°λμλ«μ μν
μ¬μΌ νλ€. npm iλ ν΄λΉ νμΌμ dependencies λΆλΆμ μμ νλλ°, package.json νμΌμ μμ ν ν λ³κ²½μ¬νμ 'μ μ₯νμ§ μμλ€λ©΄' npm iκ° ν΄λΉ νμΌμ μμ ν λ λ²μ μΆ©λμ΄ μΌμ΄λκΈ° λλ¬Έμ΄λ€.
package-lock.json νμΌμ ν¨ν€μ§λ€μ μμ νκ² κ΄λ¦¬ν΄μ€λ€. ν¨ν€μ§κ° μμ λλμ§λ₯Ό ν΄μ κ°μΌλ‘ 체ν¬ν΄μ£Όλ©°, κ° λͺ¨λλ€μ λ²μ μ΄ κΈ°λ‘λμ΄ μλ€.
μμ package.json, index.js νμΌκ³Ό ν¨κ» package-lock.json νμΌμ 곡μ ν ν, λ€λ₯Έ μ¬λμ΄ ν΄λΉ package.jsonμΌλ‘ expressλ₯Ό μ€μΉνλ€κ³ νμ. ( npm i
(o) / npm i express(x) )
μ΄λ npmμ μμμ μ΄ν΄λ΄€λ―μ΄ package.json νμΌμ dependenciesλ₯Ό μ°Έκ³ ν΄ νμν λͺ¨λ λͺ¨λλ€μ λ€μ΄λ°λλ°, λμμ package-lock.json νμΌμ μ°Έκ³ ν΄ λ€λ₯Έ μ¬λμκ²λ λμ λκ°μ λ²μ μ λͺ¨λ(express)μ μ€μΉν΄μ€λ€.
expressλ₯Ό μ¬μ©νλ λ²μ κ°λ¨νλ€. index.js νμΌμ μλμ κ°μ΄ μμ±ν΄μ£Όλ©΄ λλ€.
const express = require("express");
const app = express();
μ΄ μ½λλ μ΅μ μλ°μ€ν¬λ¦½νΈ μ½λλ‘ λ°κΏ μΈ μ μλ€. λ€λ§, λ°κΏμ°λ 건 μ΄λ ΅μ§ μλλΌλ μ΄λ₯Ό Node.jsκ° μ΄ν΄ν μ μμ΄μΌ νλ€. κ·Έλ¬κΈ° μν΄μ Node.jsκ° κ·Έ μ΅μ μ½λλ₯Ό μ΄ν΄ν μ μλλ‘ λ¨Όμ 'Babel'μ μ€μΉν΄μΌ νλ€.
π Babel
Babelμ΄λ
μλ°μ€ν¬λ¦½νΈ μ»΄νμΌλ¬
λ₯Ό λ§νλ€. Node.jsλ κΈ°λ³Έμ μΌλ‘ μλ°μ€ν¬λ¦½νΈ μ½λλ₯Ό μ΄ν΄νμ§λ§, μ΄ν΄νμ§ λͺ»νλ μ΅μ μλ°μ€ν¬λ¦½νΈ μ½λκ° μλ€. Babelμ μ΄λ¬νμ΅μ μ½λλ₯Ό λͺ¨λκ° μ΄ν΄ν μ μλ μ½λλ‘ λ°κΏμ€λ€.
π Babel μ€μΉνκΈ°
- λ¨Όμ , Babelμ μ€μΉνκΈ° μν΄ μλ μ½λλ₯Ό ν°λ―Έλμ μ λ ₯νλ€.
μ΄νμ λͺ¨λ κ³Όμ μ Babel ννμ΄μ§ - Nodeλ₯Ό μ°Έκ³ ν΄ μ§νν μ μλ€.npm install --save-dev @babel/core
μ΄λ κ² νλ©΄ package.jsonμ
devDependencies
κ° μΆκ°λλ€. (μμ λͺ λ Ήμ΄μμ '--save-dev'λ₯Ό λΉΌκ³ μ λ ₯νλ©΄ dependenciesμ μΆκ°λλ€.) dependenciesμ devDependenciesλ κ°λ°μλ€μ μν΄ κ΅¬λΆνμ¬ μΆκ°λλ κ²μΌ λΏ, λ λ€ node_modulesμ μ€μΉλλ κ²μ λμΌνλ€."dependencies": { // β νλ‘μ νΈλ₯Ό μ€ννκΈ° μν΄ νμν κ² "express": "^4.17.1" }, "devDependencies": { // β κ°λ°μκ° μ½λ©μ μ’λ νΈνκ² νκΈ° μν΄ νμλ‘ νλ κ² "@babel/core": "^7.16.0" }
π μ€μ νμΌ λ§λ€κΈ°
- λ€μμΌλ‘, μ€μ νμΌμ λ§λ€κΈ° μν΄ μλ μ½λλ₯Ό ν°λ―Έλμ μ λ ₯νλ€.
touch babel.config.json // μλμ°μμλ notepad babel.config.json μ λ ₯ !
μμ±λ μ€μ νμΌμ μλ μ½λλ₯Ό μμ±νλ€.
{ "presets": ["@babel/preset-env"] }
- λ€μ ν°λ―Έλμ μλ μ½λλ₯Ό μ λ ₯νλ€. νμ npm install λͺ λ Ήμ΄λ package.json νμΌμ μ μ₯νκ±°λ λ«μ μνμμ μ€νμμΌμΌ νλ€.
npm install @babel/preset-env --save-dev
μ μμ μ κ²°κ³Ό, package.json νμΌμ ν μ€μ μ½λκ° λ μΆκ°λλ€.
μ€μΉλ Babelμ μμμ μ€μ νμΌ(babel.config.json)μ μ°Ύμ κ·Έ νμΌμ λ΄μ©μ μ°Έκ³ νλ€."devDependencies": { "@babel/core": "^7.16.0", "@babel/preset-env": "^7.16.0" }
μμμ μ€μ νμΌμ μμ±νλ μ½λλ₯Ό μ΄ν΄λ³΄λ©΄,
presets
λΌλ κ²μ΄ μλ€. presetμ΄λ babelμ μν κ±°λν νλ¬κ·ΈμΈμ λ§νλ€. κ·Έ κ°μ΄λ°preset-env
κ° κ°μ₯ μ λͺ νλ°, μ΄λ μ΅μ μλ°μ€ν¬λ¦½νΈ ꡬ문μ μ¬μ©ν μ μλλ‘ ν΄μ€λ€.π Babel μ¬μ©νκΈ°
index.js νμΌμ μλ μ½λλ₯Ό μ λ ₯νλ©΄, Babelμ μ¬μ©ν μ μλ€.
require("@babel/core").transform("code", { presets: ["@babel/preset-env"], });
κ·Έλ¬λ μ΄λ κ² μ§μ μλ°μ€ν¬λ¦½νΈμμ Babelμ μ¬μ©νλ λμ μ, package.json νμΌμμ
babelλ‘ μ»΄νμΌνλ script
λ₯Ό λ§λ€μ΄ μ¬μ©ν μλ μλ€. μ΄λ₯Ό μν΄μλ Nodemonμ΄λ κ²μ΄ νμνλ€.
π Nodemon
Nodemonμ νμΌμ κ΄μ°°νκ³ μλ€κ° νμΌμ΄ μμ λλ©΄ μμμ μλ²λ₯Ό μ¬μμν΄μ€λ€.
π babel/node μ€μΉνκΈ°
- λ¨Όμ , Nodemonμ μ€μΉνκΈ° μ μ babel/node μ€μΉνκΈ° μν΄ μλ μ½λλ₯Ό ν°λ―Έλμ μ λ ₯νλ€.
μ΄νμ κ³Όμ μ Babel ννμ΄μ§ - Nodemonλ₯Ό μ°Έκ³ ν΄ μ§νν μ μλ€.npm install @babel/core @babel/node --save-dev // μ΄λ―Έ μ€μΉλ babelμ npmμ΄ μμμ λΉΌκ³ μ€μΉν΄μ€λ€
π 'Babelλ‘ μ»΄νμΌνλ script' μΆκ° λ° μ€ν
"scripts": { "dev": "babel-node index.js" // μ΄μ μ λ§λ€μλ start scriptμμ μμ 'babel-'λ§ μΆκ°ν΄μ€ κ² }
ν΄μ: index.jsλΌλ νμΌμ babel-nodeλ₯Ό μ¬μ©νκ³ μΆλ€.
npm run dev
VS code ν°λ―Έλμ μμ²λΌ μμ±νλ©΄, dev scriptμ λ°λΌ Babelμ΄ Node.jsμ ν¨κ» μ€νλλ€.
// const express = require("express"); λ₯Ό // μ΅μ μ½λλ‘ λ°κΎΈλ©΄ μλμ κ°λ€ import express from "express";
μ¦, Babelμ΄ μμ κ°μ μ΅μ μλ°μ€ν¬λ¦½νΈ μ½λλ Node.jsκ° μ΄ν΄ν μ μλ μ½λλ‘ λ°κΏμ€μΌλ‘μ¨, μ΅μ μ½λλ λ¬Έμ μμ΄ μ€νλλλ‘ νλ€.
κ·Έλ¬λ, μ΄λ κ² νλ©΄ index.jsμ μ½λλ₯Ό λ°κΏ λλ§λ€ ν°λ―Έλμ npm run devλ₯Ό μ λ ₯ν΄μ€μΌ νλ€. λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ Nodemonμ μ¬μ©ν μ μλ€. Nodemonμ μ¬μ©νλ©΄ μ²μμ ν°λ―Έλμ λͺ λ Ήμ΄λ₯Ό ν λ²λ§ μ λ ₯ν΄λ νμΌμ΄ μμ λ λλ§λ€ μλμΌλ‘ μ¬μμν΄μ€λ€.
π Nodemon μ€μΉ
npm install nodemon --save-dev
π Nodemon μ€ν
κΈ°μ‘΄μ dev script μ½λ μμ
nodemon --exec
λ₯Ό λΆμ¬μ€λ€"scripts": { "dev": "nodemon --exec babel-node index.js" // nodemonμ΄ babel-node index.jsμ μ€ννλ€ }
μ΄μ λ§€λ² λͺ λ Ήμ΄λ₯Ό μ λ ₯ν΄μ£Όμ§ μμλ νμΌμ μμ ν ν μ μ₯ν λλ§λ€ index.js νμΌμ μ½λκ° μ€νλλ€.
κ°μ κ³μ λ£κΈ°
μ€λ₯ ν΄κ²° - λ§μ§λ§ babel-nodeμ nodemon λΆλΆμμ μλ¬κ° λ¬λ€..