Tengo un problema en un complemento de Storybook que creé.
ESCENARIO ACTUAL
El problema ocurre en el entorno del complemento Storybook cuando se importa una función aleatoria (llamémosla getSomeData ) desde un archivo (llamémoslo lib.ts ) que contiene otras funciones que requieren archivos .md con rutas dinámicas (por ejemplo, un README.md expediente)
lib.ts
const getSomeData = () => { ... return ... } export const getPackageReadme = (packageName: string) => { try { return require(`@namespace/${packageName}/README.md`) } catch { return null } }Esta dinámica requiere que importe estos archivos .md como README.md y se ejecutan en tiempo de compilación por el motor Storybook.
El hecho extraño es que en el registro de Storybook parece que esta función se ejecuta y lee todos los archivos .md con el nombre exacto README.md que viven en todas partes en el repositorio actual, también dentro de node_modules, dando una cantidad exacta de errores como la cantidad de todos los archivos README.md encontrados en el repositorio actual. Y, en consecuencia, la compilación de Storybook falla.
Si bien este error ocurre en el tiempo de compilación de Storybook, en el tiempo de ejecución en el navegador ocurre cualquier problema y todo funciona como se esperaba.
SOLUCIÓN ACTUAL
La solución actual, que huele a gancho, para solucionar el problema fue dividir este lib.ts en diferentes archivos (por ejemplo , lib-md.ts y lib-data.ts ). De esta manera, el complemento Storybook incluye solo lib-data.ts y, de esta manera, se requiere cualquier archivo README.md en tiempo de compilación, por lo que la compilación tiene éxito.
lib-data.ts
const getSomeData = () => { ... return ... }lib-md.ts
export const getPackageReadme = (packageName: string) => { try { return require(`@namespace/${packageName}/README.md`) } catch { return null } }¿Hay alguna solución para evitar este error?