Você deve usar um empacotador como o esbuild, que compilará seu projeto e agrupará todas as suas dependências junto com ele para que não sejam importadas. Isso ignora o problema de incompatibilidade ESM/CommonJS.
Se você estiver impaciente, pode ir direto para o código com este exemplo de implementação.
Enquanto me preparava para lançar meu novo projeto Token.js no fim de semana, me deparei com um problema bastante frustrante. Eu queria que meu pacote suportasse CommonJS além do ESM, mas tinha dependências puras do ESM. Os defensores do ESM puro por aí podem ficar bastante insatisfeitos com o que eu disse, mas se você estiver construindo um pacote NPM e quiser que ele seja amplamente utilizado, você ainda precisará oferecer suporte ao CommonJS em 2024.
Token.js é um SDK TypeScript simples que permite integrar 60 LLMs de 9 provedores diferentes (OpenAI, Anthropic, Cohere, etc). Plugue desavergonhado, dê uma olhada e me diga o que você acha se você gosta de IA generativa.
Agora, existem vários recursos online discutindo como construir projetos Javascript para ESM, CommonJS ou ambos. No entanto, tive problemas específicos para lidar com o fato de ter dependências que eram puro ESM. Achei isso muito difícil de lidar porque não estou familiarizado com empacotadores (trabalhei principalmente em back-ends de aplicativos da web) e não consegui encontrar um bom guia sobre o assunto.
Então, se alguém estiver enfrentando esse problema, aqui está a solução.Guia
yarn add esbuild --save-devCrie um script de construção
yarn add esbuild --save-devAdicione um script de construção ao seu package.json
yarn add esbuild --save-devEu pessoalmente adoro o vite-node. Então, se você quiser acompanhar exatamente, você precisará instalar isso:
yarn add esbuild --save-devConstrua seu projeto
yarn add esbuild --save-devIsso fará com que seu projeto seja compilado com esbuild e você verá um novo arquivo, dist/index.cjs, que é a compilação CommonJS do seu pacote.
Configurar ponto de entrada
yarn add esbuild --save-devBam! Pronto, você construiu seu pacote para CommonJS. Isso funcionará mesmo se você tiver dependências do ESM porque as dependências serão agrupadas
junto com seu pacote.
As dependências são incluídas na saída por causa do campo bundle: true quando esbuild é chamado.Declarações TypeScript
esses, você vai querer usar tsc normal.
está sendo construído com esbuild.
yarn add esbuild --save-devAtualize seu script de construção
yarn add esbuild --save-devPontos de entrada duplos
Atualize seu script de construção para incluir uma construção ESM
yarn add esbuild --save-devAtualize seu arquivo package.json para incluir pontos de entrada duplos
yarn add esbuild --save-devCódigo fonte
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3