Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

337
Vistas
¿Cómo evitar la duplicación de código entre puntos de entrada en Rollup?

Quiero configurar el resumen para tomar un montón de archivos en la entrada y producir un montón de archivos en dist que comparten un código común entre ellos.

Aquí está la configuración acumulada que uso:

 import path from 'path'; import pathsTransformer from 'ts-transform-paths'; import alias from '@rollup/plugin-alias'; import commonjs from '@rollup/plugin-commonjs'; import { nodeResolve } from '@rollup/plugin-node-resolve'; import typescript from 'rollup-plugin-typescript2'; import peerDepsExternal from 'rollup-plugin-peer-deps-external'; const plugins = [ peerDepsExternal(), alias({ entries: [ { find: '@', replacement: path.join(__dirname, '/src') }, { find: '$root', replacement: __dirname }, ], }), nodeResolve(), typescript({ transformers: [() => pathsTransformer()], }), commonjs({ extensions: ['.js', '.ts'], }), ]; export default [ { input: './src/a.ts', output: { file: 'dist/a.js', format: 'esm', sourcemap: true, }, plugins, }, { input: './src/b.ts', output: { file: 'dist/b.js', format: 'esm', sourcemap: true, }, plugins, }, ];

El problema con esta configuración es que si tanto a.ts como b.ts dependen de algún código, este código común se empaqueta en cada archivo de salida aumentando innecesariamente el tamaño del paquete.

Dado que el formato de esm es output.format (por lo tanto, las import están disponibles en la salida), prefiero esperar que el resumen divida el código compartido entre los 2 archivos en un fragmento separado y luego haga que ambos archivos import ese código común ( que parece ser lo que hace rollup por defecto de todos modos ).

Supongo que el problema está en algún lugar alrededor de las llamadas nodeResolve o commonjs , pero quiero que mis dependencias estén agrupadas. Simplemente no quiero tenerlos duplicados .

¿Cómo optimizo mi producción? Aquí una reproducción para visualizarlo ( dist incluido).

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Al devolver una matriz de objetos, especifica al resumen que desea tener paquetes independientes . Si solo desea producir varios archivos (que fue exactamente mi caso), puede especificar input como un objeto.

 import path from 'path'; import pathsTransformer from 'ts-transform-paths'; import alias from '@rollup/plugin-alias'; import commonjs from '@rollup/plugin-commonjs'; import { nodeResolve } from '@rollup/plugin-node-resolve'; import typescript from 'rollup-plugin-typescript2'; import peerDepsExternal from 'rollup-plugin-peer-deps-external'; const plugins = [ peerDepsExternal(), alias({ entries: [ { find: '@', replacement: path.join(__dirname, '/src') }, { find: '$root', replacement: __dirname }, ], }), nodeResolve(), typescript({ transformers: [() => pathsTransformer()], }), commonjs({ extensions: ['.js', '.ts'], }), ]; export default { input: { a: './src/a.ts', b: './src/b.ts', }, output: { dir: 'dist', format: 'esm', sourcemap: true, }, plugins, };
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda