Node.js 모듈시스템과 CJS, ESM
Last updated
Last updated
모듈: 분리된 파일 각각, 클래스 하나 혹은 라이브러리 하나
필요한 모듈을 불러오고 내보낼 때의 모듈을 구성하는 방법이다.
Node.js에서는 CJS, ESM 두 가지가 존재한다.
아래 방식이 대표적이고 자세한 부분은 공식문서에서도 확인할 수 있다.()
확장자
cjs(ts v4.7부터 cts)
: CJS
mjs(ts v4.7부터 mts)
: ESM
package.json의 type 필드
type = commonjs
: CJS
type = module
: ESM
require
/ module.exports
module loader가 동기적으로 동작
import
/ export
진입점(cjs/index.js, esm/index.js) 파일 구성
각 모듈 방식에 따라 컴파일
package.json의 exports 필드를 통해 모듈별 패키지 entry point 지정
파일 시스템 상의 위치와 import path를 다르게 가져갈 수 있다.
Typescript 지원
CJS
ESM
경로는 상대 경로로 작성
module loader가 지원으로 비동기적으로 동작