Paquetes de doble formato: construcción sin fisuras de CJS y ESM con Nx

Construye de forma precisa y eficiente aplicaciones con Angular utilizando la combinación de Angular CLI, Jasmine, y Protractor para una construcción sin fisuras y eficiente con Nx.

27 oct 2025 • 3 min read • Q2BSTUDIO Team

Construcción sin fisuras de CJS y ESM con Nx

Introducción: El ecosistema de módulos de JavaScript está en transición. ESM (ECMAScript Modules) se ha consolidado como el estándar moderno mientras que CommonJS o CJS sigue muy presente en muchos proyectos heredados. ESM, introducido en ES6 en 2015, unifica la modularidad en navegador y servidor y aporta ventajas claves como carga asíncrona, mejor optimización por tree shaking mediante análisis estático y soporte nativo en navegadores sin necesidad de bundlers.

Por qué ofrecer ambos formatos: Como autor de bibliotecas conviene soportar proyectos legacy basados en CommonJS y a la vez proyectos modernos que consumen ESM. Publicar un único paquete npm compatible con ambos formatos garantiza máxima compatibilidad y alcance. Ventajas prácticas: compatibilidad universal, mejor rendimiento, y características modernas como dynamic import y top level await en entornos que lo soportan.

Configurando un workspace Nx: Para construir un paquete universal recomendamos usar Nx junto a Rollup. Pasos rápidos para crear un workspace y una librería publicable con bundler rollup: bunx create-nx-workspace@22 dual-modules-workspace cd dual-modules-workspace bunx nx g @nx/js:lib packages/my-library --name my-library --importPath @dual-modules-workspace/my-library --bundler rollup --linter eslint --publishable --unitTestRunner vitest --setParserOptionsProject --useProjectJson. Este esquema genera una estructura organizada con package.json, rollup.config.cjs, src y tsconfig orientados a una librería publicable.

Configuración de Rollup: Usar el helper de Nx para rollup simplifica la configuración. Se recomienda emitir salidas tanto en formato esm como cjs y activar preserveModules para favorecer tree shaking y mantener la estructura de módulos en dist. También puede usarse un compilador rápido como swc para compilar TypeScript a JS eficientemente.

package.json y campo exports: Para dirigir import a ESM y require a CJS de forma automática hay que aprovechar el campo exports. Indicar types apuntando al fichero de declaraciones generado y establecer require e import en las rutas correctas asegura que consumidores CommonJS y ESM resuelvan el paquete de forma nativa. No olvidar marcar sideEffects como false cuando la librería no tiene efectos secundarios para mejorar tree shaking.

Declaraciones TypeScript: Generar .d.ts centralizados permite que consumidores TypeScript obtengan tipado correcto. Si se quiere evitar mapas de origen en la publicación, desactivar sourceMap en el tsconfig base puede ser útil para reducir peso del paquete.

Proceso de build: Ejecutar nx build my-library producirá en dist versiones index.cjs.js e index.esm.js junto con index.d.ts y una estructura de módulos preservada. Validar que los paths de exports en package.json coincidan con los ficheros generados y que los bundles funcionen en Node y en bundlers modernos.

Publicación y release: Nx incluye utilidades para release que integran versionado semántico y conventional commits, facilitando la publicación en el registro npm. Configurar CI para builds y pruebas antes de publicar ayuda a mantener calidad y evitar regressiones en consumidores tanto legacy como modernos.

Buenas prácticas adicionales: mantener el bundle pequeño, declarar sideEffects apropiadamente, probar la librería con ejemplos reales en proyectos CJS y ESM, y documentar claramente cómo importar según el entorno. Considera también ofrecer builds para navegadores si tu librería se consume en frontend puro.

Sobre Q2BSTUDIO: En Q2BSTUDIO somos una empresa de desarrollo de software especializada en aplicaciones a medida y software a medida, con amplia experiencia en inteligencia artificial, ciberseguridad, servicios cloud aws y azure y servicios inteligencia de negocio. Si necesitas desarrollar componentes modulares, bibliotecas publicables o arquitecturas que soporten múltiples formatos y despliegues en la nube, podemos ayudarte a diseñar la solución óptima. Conoce nuestras capacidades en desarrollo de aplicaciones y software a medida en desarrollo de aplicaciones y software multiplataforma y nuestras opciones de infraestructura en servicios cloud AWS y Azure.

Servicios y palabras clave: Ofrecemos proyectos con enfoque en ia para empresas, agentes IA, power bi y servicios inteligencia de negocio, integración con pipelines de CI CD, y auditorías de seguridad y pentesting para proteger tus paquetes y entornos. Si tu organización busca acelerar adopción de inteligencia artificial, mejorar la seguridad o desplegar soluciones cloud escalables, Q2BSTUDIO aporta experiencia práctica y soluciones personalizadas.

Conclusión: Construir paquetes duales CJS y ESM con Nx y Rollup es una estrategia efectiva para maximizar compatibilidad y rendimiento. Publica salidas duales, configura exports correctamente y valida tus builds. Si quieres apoyo profesional para desarrollar, asegurar o desplegar tus librerías y aplicaciones a medida, contacta con Q2BSTUDIO y transforma tus ideas en productos robustos y escalables.

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.

Live Chat