Node.js는 Chrome의 V8 JavaScript 엔진 위에서 동작하는 서버 사이드 JavaScript 런타임 환경
원래 웹 브라우저에서만 동작하던 JavaScript를 브라우저 바깥,
즉 서버나 로컬 컴퓨터에서도 실행할 수 있도록 해주는 플랫폼
새로운 패키지 생성
npm init
이후, package.json 파일 생성을 위한 여러 질문을 차례대로 입력 (패키지 이름, 버전, 설명 등)
빠르게 생성하려면 (기본값으로 자동 설정)
npm init -y
Node.js 환경에서 자바스크립트 파일 실행 터미널 명령어
node index.js
패키지 스크립트(package script)
package.json 파일의 "scripts" 항목에 정의되어 있으며,
주로 터미널에서 실행할 수 있는 명령어 모음
이렇게 package.json을 설정한 후에
{
"name": "my-app",
"version": "1.0.0",
"scripts": {
"start": "node app.js",
"dev": "nodemon app.js",
"test": "echo \"Error: no test specified\" && exit 1"
}
}
터미널에서 아래처럼 실행
npm run start # "node app.js" 실행
npm run dev # "nodemon app.js" 실행
npm test # "npm run test"와 같음
// start와 test는 특별한 예약어로, npm start, npm test 처럼 run 생략 가능
자주 쓰는 스크립트 예시
| "start" | 서버 시작 (node index.js, ts-node, 등) |
| "dev" | 개발 모드 실행 (nodemon, webpack-dev-server 등) |
| "build" | 프로젝트 빌드 (webpack, tsc 등) |
| "lint" | 코드 스타일 검사 (eslint .) |
| "test" | 테스트 실행 (jest, mocha, 등) |
모듈
(1) commonJS (CJS)
// test/src/math.js
function add(a, b){
return a+b;
}
function sub(a, b){
return a-b;
}
module.exports = {
add: add, // add (key와 value 이름 같을 경우)
sub: sub // sub
}
// test/src/index.js
const mathModule = require("./math.js");
console.log(mathModule.add(1,2));
console.log(mathModule.sub(4,3));
// const {add, sub} = require("./math.js");
// console.log(add(3,4));
// console.log(sub(5,6));
(2) ECMAScript Module (ESM)
pakage.jason 파일에 설정 필요: "type": "module" 항목 추가
ES 모듈 시스템을 사용하겠다고 설정하면, CJS는 사용할 수 없다
{
"name": "test",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node src/index.js"
},
"author": "",
"license": "ISC",
"description": "",
"type": "module"
}
import {add, sub} from "./math.js"
// import mul, {add, sub} from "./math.js"
console.log(add(3,4));
console.log(sub(5,6));
// 방법 1
function add(a, b){
return a+b;
}
function sub(a, b){
return a-b;
}
export {add, sub};
// 방법2
export function add(a, b){
return a+b;
}
export function sub(a, b){
return a-b;
}
export default funcion mult(a, b){
return a*b;
}
// export 뒤에 default 키워드를 붙이면 모듈을 대표하는 기본값이 된다
// import할때, 중괄호 없이 불러오도록 설정해 주어야 하고, 이름을 바꿔서 불러오는 것도 가능하다
node.js 라이브러리
npm | Home
Bring the best of open source to you, your team, and your company Relied upon by more than 17 million developers worldwide, npm is committed to making JavaScript development elegant, productive, and safe. The free npm Registry has become the center of Java
www.npmjs.com
원하는 모듈의 설치 명령어를 터미널에 입력하면 해당 라이브러리 설치가 진행된다
- package.jason 파일 dependencies 항목에 라이브러리 이름, 버전이 추가됨
- node_modules 폴더 추가됨 (설치한 라이브러리가 실제로 저장되는 공간)
- package-lock.jason에는 좀 더 정확한 버전 정보가 저장됨
node_modules 폴더나, package-lock.jason 파일이 삭제되면 정상적으로 동작하지 않는데,
이때 터미널에 npm install 또는 npm i 명령어를 입력하면
package.jason 파일의 dependencies 부분을 참고하여 자동으로 필요한 라이브러리를 설치해 준다
라이브러리로부터 import 할 때에는 from 뒤에 경로를 명시할 필요 없이,
그냥 "라이브러리 이름"만 명시해 주면 된다
import randomColor from "randomcolor";