Node.js 패키지 작성자: CJS와 ESM을 모두 지원하세요.
2232 단어 npmtutorialnodetypescript
이제 TypeScript는 대부분의 NPM 패키지 작성자가 선택하는 항목이므로 CJS와 ESM을 모두 "빌드 대상"으로 지원하는 것이 그 어느 때보다 쉬워졌습니다.
문제
ESM 출력과 관련하여 표준 TypeScript 컴파일러(
tsc
)는 여전히 약간 제한적입니다. 소스 코드 파일에 .ts
를 사용하면 .mjs
파일을 출력할 수 없습니다. 이 제한에 대한 해결 방법이 있지만, 특히 릴리스를 생성할 NPM 패키지가 둘 이상 있는 단일 리포지토리에 있는 경우 특히 너무 많은 노력이 필요한 경우가 많습니다.해결책
esbuild
를 사용하여 .js
및 .mjs
파일을 모두 생성하고 선언 파일( tsc
)에 대해서만 .d.ts
를 사용합니다.모두 동일한 출력 디렉토리를 사용할 수 있습니다.
npm install --save-dev esbuild
CommonJS(CJS) 출력 생성:
npx esbuild --outdir=build --platform=node --format=cjs src/*.ts
ES 모듈(ESM) 출력 생성:
npx esbuild --out-extension:.js=.mjs --outdir=build --platform=node --format=esm src/*.ts
TypeScript 선언 파일 생성:
npx tsc
또는
esbuild
및 typescript
API를 통해 이 3단계를 수행할 수 있습니다. See the full example using esbuild
and typescript
APIs .마지막으로
package.json
의 경우 3개의 출력을 모두 결합할 수 있습니다. "main": "./build/index.js",
"module": "./build/index.mjs",
"typings": "./build/index.d.ts",
도움이 되었기를 바랍니다!
Reference
이 문제에 관하여(Node.js 패키지 작성자: CJS와 ESM을 모두 지원하세요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/endel/nodejs-package-authors-please-support-both-cjs-and-esm-1oj3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)