Sé que esta pregunta surgió en variaciones similares a menudo, pero ninguna solución parece ajustarse completamente a mis necesidades. Tengo el siguiente problema:¿La mejor manera de concatenar archivos de JavaScript con dependencias y darlos como un módulo?
En desarrollo utilizo varios archivos JS (un único archivo por cada "objeto"). Estos archivos JS tienen varias dependencias entre sí, algunos dependen de otros y necesito cargarlos primero. Actualmente utilizo RequireJS para cargar cada archivo JS en el orden correcto, por lo que defino un módulo para cada archivo. Fino y elegante. Pero ahora quiero concatenar todos mis archivos JS en un gran archivo JS que debería ser un módulo en sí mismo. Yo uso el optimizador RequireJS r.js para hacer eso. Mi problema: Todos los archivos JS se concatenan en un archivo JS grande, pero se incluye la definición del módulo para cada objeto. No tengo un gran módulo en un archivo grande, sino muchos módulos en un archivo grande.
Después de eso probé ronco para concatenar, que funciona bien, pero ignora las dependencias de los archivos. Simplemente concatena todos los archivos en orden alfabético o tengo que codificar el orden en mi gruntfile.
¿Cómo puedo solucionar esto?
Sólo como ilustración a mi problema: He siguientes archivos (pseudo código):
FileA
- define FileA module
- depends on FileB
- FileA Logic
FileB
- define FileB module
- FileB Logic
Y quiero que esta salida:
LibFile
- define LibFile module
- FileB Logic, FileA Logic
Pero conseguir esto con r.js (módulo de definición de FILEA y FILEB se copia):
LibFile
- define FileB module
- FileB Logic
- define FileA module
- depends on FileB
- FileA Logic
y consigo esta w ronco ITH (orden incorrecto):
LibFile
- FileA Logic
- FileB Logic
Tal vez que preguntas es un poco estúpida, pero simplemente no puede resolver esto con las herramientas que todo el mundo parece utilizar ... Probé el plugin ronco-RequireJS, también. Pero arroja varios errores que no pude resolver.
Gracias, Pipo
por qué tener a todos en un archivo es un problema ? Puede usar ese archivo como un módulo si utilizó el paradigma "paquete" para registrar los pequeños ... – ZenMaster
Hola ZenMaster, ¿qué quiere decir con el paradigma del "paquete"? Usé "define ([" ./ fileB "], function (fileB) {// algún código para fileA; return fileA;});" para definir mis módulos Pero si tengo varios pequeños módulos como este en un archivo grande e intento cargar el archivo como este "define ([" ./ LibFile "], función (LibFile) {// algún código;});" LibFile no está definido. No puedo requerir el archivo grande como un solo módulo. – Pipo
Ver respuesta. Espero que ayude. – ZenMaster