Drop lodash from @pi/ui

The three functions it used (isEqual, some with an object as criterion
and capitalize) live in util/common/compare.ts with the same behaviour,
so apps no longer pull a CommonJS library that Node's ESM loader cannot
resolve by path. TaskStream's initial bundle goes down to 1.88 MB.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-13 06:52:28 +02:00
parent c6ca5eb6ab
commit 4a33c9ade5
12 changed files with 247 additions and 216 deletions

View File

@@ -195,12 +195,11 @@ Detalles a tener en cuenta:
ignorando su valor. Se descubrió al dividir los componentes; `pi-bar-chart`
es la primera versión que realmente renderiza barras.
**`lodash` se importa por función y con extensión** (`lodash/isEqual.js`,
`lodash/some.js`, `lodash/capitalize.js`), nunca `import _ from 'lodash'`:
lodash es CommonJS y el import completo mete la librería entera en el bundle de
quien use un select. La extensión hace falta porque lodash no declara
`exports`: un empaquetador resuelve `lodash/isEqual`, pero Node en ESM (Vitest,
SSR) no, y la app falla al cargar `@pi/ui`.
**Sin lodash.** Las tres funciones que se usaban (`isEqual`, `some` con un
objeto como criterio y `capitalize`) están en `util/common/compare.ts`, con la
misma semántica. lodash es CommonJS y sin mapa de `exports`: entero pesaba en el
bundle de quien usara un select, y por funciones (`lodash/isEqual`) Node en ESM
(Vitest, SSR) no lo resolvía.
**El loader de servidor de traducciones ya no está en el barrel.**
`util/translate/loaders/translate-server.loader` usa `fs`, `path` y `process`;