Olá, Bruno! Tudo joia?
Para conseguir isso, você pode seguir alguns passos para configurar seu projeto TypeScript e o tsconfig.json
. A ideia é compilar seu código duas vezes, uma para cada módulo, e disponibilizar ambas as versões no seu pacote npm.
Aqui está um exemplo prático de como você pode fazer isso:
Estrutura do Projeto:
- Crie duas pastas de saída, uma para CommonJS e outra para ESModules.
- Configure dois arquivos
tsconfig.json
, um para cada módulo.
Configuração do tsconfig.json
:
Crie um tsconfig.commonjs.json
:
{
"compilerOptions": {
"module": "commonjs",
"outDir": "./dist/commonjs",
"declaration": true,
"declarationDir": "./dist/types"
},
"include": ["src/**/*"]
}
Crie um tsconfig.esm.json
:
{
"compilerOptions": {
"module": "esnext",
"outDir": "./dist/esm",
"declaration": true,
"declarationDir": "./dist/types"
},
"include": ["src/**/*"]
}
Scripts no package.json
:
Configuração do package.json
:
- Especifique os caminhos para os diferentes módulos:
{
"main": "./dist/commonjs/index.js",
"module": "./dist/esm/index.js",
"types": "./dist/types/index.d.ts",
...
}
Compilação:
- Execute o comando
npm run build
para compilar o projeto nas duas versões.
Com essa configuração, você estará gerando duas versões do seu pacote, uma compatível com CommonJS e outra com ESModules, além de garantir que os tipos TypeScript sejam corretamente exportados.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.