Estoy escribiendo una biblioteca de componentes en/para reaccionar y usando Rollup para empaquetarla. Como parte del proceso de compilación, estoy usando Terser para asegurarme de que el paquete sea lo más pequeño posible. Como parte del proceso de minificación, Terser cambia el nombre de las variables y luego vuelve a cambiar el nombre en la exportación. Al igual que:
export{_ as BtnResponsive,l as Button};Esto funciona bien al importar mi biblioteca a otros módulos ES. Al igual que:
import { BtnResponsive } from '@namespace/component-lib';Pero cuando creo una historia de Storybook Button.stories.tsx e importo mi componente así:
import { ComponentStory, ComponentMeta } from '@storybook/react'; import { BtnResponsive } from '@namespace/component-lib'; export default { title: 'Components/BtnResponsive', component: BtnResponsive, } as ComponentMeta<typeof BtnResponsive>; const Template: ComponentStory<typeof BtnResponsive> = (args) => <BtnResponsive {...args} />; export const Primary = Template.bind({}); Primary.args = { children: 'Primary', theme: 'primary' };Storybook luego representa el componente en mi historia como
<_ theme="primary"> Primary </_>Storybook de alguna manera no respeta la exportación renombrada. ¿Alguien sabe cómo hacer que el libro de cuentos respete el nombre del componente? ¿O sabe cómo puedo ajustar Terser para que Storybook entienda el nombre correctamente?
¡Gracias por adelantado!
Terser aparentemente tiene opciones que puede usar para evitar que altere los nombres de las funciones. En mi rollup.config.js tuve que agregar lo siguiente:
terser({ keep_fnames: true, })