필요한 함수들의 집합.
http, url, querystring, path, fs, util 등 기본적으로 Node.js에서 제공되는 모듈들.
필요에 따라 직접 생성하는 모듈.
const log = {
info: function (info) {
console.log("Info " + info);
},
warning: function (warning) {
console.log("Warning " + warning);
},
error: function (error) {
console.log("Error " + error);
},
};
module.exports = log;
이런 식으로 모듈을 생성할 수 있고, 다른 파일에서 위 객체를 불러오고 싶을 때 const module = require("./log.js"); 처럼 불러올 수 있다.
module.exports = log;
module.exports.A = 1;
module.exports.encrypt = function encrypt(data) { return "data"; }
exports.encrypt = function encrypt(data) { return "data"; }
하지만 맨 아래에서 모듈을 exports 하는 것이 가장 좋다.
Node.js의 기본 모듈로 사용된다.
module.exports-require
CommonJS와 다른 문법을 사용한다.
export-import
ES 모듈은 자바스크립트의 표준이고 CommonJS는 Node.js의 기본값이다.
ES 모듈을 사용하려면 파일 확장자를 mjs로 바꿔줘야 한다.
모듈을 불러오는 과정에서 관련 있는 모듈을 한 디렉토리 안에 넣어놓고 그 디렉토리의 index.js 파일에서 모든 모듈을 묶어서 내보내는 경우가 많은데, 이는 모듈 로딩 시스템을 복잡하게 할 수 있기 때문에 index.js를 활용하여 모듈을 묶어서 내보내는 것은 지양해야 한다고 한다.
npm init -y 명령어를 입력하면 프로젝트가 생성되고 package.json 파일이 생성된다.
npm install [package_name] 명령어는 원하는 패키지를 설치한다.
install을 통해 패키지를 설치하면 프로젝트의 루트 디렉토리에 node_modules 디렉토리가 생긴다. 여기에는 앞서 설치한 패키지(모듈)와 그 패키지(모듈)가 의존하고 있는 모든 모듈이 포함되어있다.
예를 들어 axios 모듈을 설치했다면 axios가 의존하는 모든 모듈이 설치가 되는 것이다.
axios는 follow-redirects, form-data, proxy-from-env에 의존하고, 이 세 가지 모듈도 의존하는 모듈이 있다면 전부 node_modules 디렉토리에 설치된다.
package.json 파일을 보면 dependencies에서 설치된 모듈을 확인할 수 있는데, 모듈마다 3개의 숫자(n.n.n)로 이루어진 버전이 있다.
예시)
"follow-redirects": "^1.15.0
1(MAJOR).15(MINOR).0(PATCH)
MAJOR - 호환되지 않는 API 변경 시 (이전 버전과 호환 x)
MINOR - 이전 버전과 호환 가능; 기능 추가
PATCH - 이전 버전과 호환 가능; 버그 수정
앞에 붙는 기호:
~(틸드): PATCH 까지만 설치/업데이트 (~1.0.5는 1.0.5 ~ 1.1 범위 내에서 설치/업데이트)
^(캐럿): MINOR 까지만 설치/업데이트 (^1.0.5는 1.0.5 ~ 2.0 범위 내에서 설치/업데이트) (예외: 1.0.0 미만의 경우 지정한 버전 자릿수 내에서 업데이트)
여러 명이서 작업을 할 때에 캐럿이나 틸드로 버전을 표시하면 패키지를 설치/업데이트한 시점에 따라 버전이 다 다를 수 있는데, package-lock.json 파일은 현 시점 기준 정확한 버전 정보를 담고 있다. 따라서 버전 충돌을 해결할 수 있다.
현재 프로젝트에 구성된 종속성에 대한 설명을 기본 레지스트리에 제출하고 알려진 취약성에 대한 보고서를 요청한다.
어떤 모듈에서 어떤 취약점이 발생했는 지 알려준다. fix 인수가 제공되면 수정사항이 패키지 트리에 적용된다.
위 명령어로 패키지를 설치하면 현재 프로젝트에만 설치되는 것이 아닌 로컬(컴퓨터) 환경의 전역에 설치가 된다.