Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

338
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!