¿Cómo organizar los componentes reutilizables de JS con sus propias dependencias en paquetes de terceros (por ejemplo vendor/ subdirectorios) con diferentes archivos/configuraciones de entrada del paquete web?
Descripción:
Tengo la siguiente estructura con puntos de entrada y componentes.
app/ assets/ index.js package.json webpack.config.js vendor/ my-utils-bundle/ assets/ components/ MyMath.js package.json webpack.config.js En mi incluible dentro de diferentes archivos de entrada/configuraciones de paquetes web MyMath.js componentes hay node_modules/ dependencia para empaquetar, por ejemplo, mathjs con la siguiente línea:
import { pi, pow, round, sqrt } from 'mathjs' ....some code below... Paquete de dependencia de PS mathjs proporcionado en este paquete ( vendor/my-utils-bundle/package.json )
Luego, cuando ejecuto yarn dev para compilar mis activos en app/assets/index.js , aparece el siguiente error:
"./vendor/my-utils-bundle/assets/components/MyMath.js" contains a reference to the file "mathjs". This file can not be found, please check it for typos or update it if the file got moved.Pregunta:
¿Cómo puedo usar estos componentes MyMath.js como clase incluible en app/assets/index.js y tal vez también en otros "paquetes" (por ejemplo vendor/my-other-bundle )?
Parece que podría instalar esta dependencia de mathjs también en app/package.json , pero luego parece que en el nivel de la aplicación debería pensar en los paquetes de dependencias de JS que no suenan como la mejor solución.
Esta es una pregunta abierta que ha estado ocurriendo desde el lanzamiento de Encore. Incluso antes, dado que de acuerdo con las mejores prácticas para paquetes , las dependencias de terceros no deben distribuirse y dejar que la aplicación las administre.
Dicho esto, hay al menos un paquete (foxy) que intenta resolver esto, conectando los comandos del composer y fusionando dependencias cuando los paquetes están instalados/actualizados.
De su README (énfasis mío):
Foxy se enfoca únicamente en la automatización de la validación, adición, actualización y eliminación de las dependencias en el archivo de definición del paquete de activos , mientras restaura el estado del proyecto, así como las dependencias de PHP si NPM o Yarn terminan con un error.
Foxy recupera la lista de todas las dependencias de Composer para inyectar las dependencias de activos en el archivo package.json
[...]
Dado que Foxy no manipula ninguna dependencia de activos, y mucho menos las restricciones de versión, esto permite que NPM o Yarn resuelvan las dependencias de activos sin ningún intermediario.