[Python-es] Assets: ¿Como manejarlos?

lasizoillo lasizoillo en gmail.com
Mie Abr 19 18:31:58 EDT 2017


El día 19 de abril de 2017, 22:25, Juan Pablo Scaletti
<juanpablo en jpscaletti.com> escribió:
> Creo que terminaré saltándome esa limitación generando automáticamente un
> Bundle para cada archivo. Claro que queda el problema de que no hay forma de
> versionar los archivos binarios (imágenes, etc)
>
> (En estos momentos envidio un poco a Rails, que tiene todo esto montado de
> fábrica y pudiendo subirlos a un CDN, etc)

No conozco Rails, pero teniendo la abstracción de los Storages en
django no me llama la atención el echarle un ojo

https://docs.djangoproject.com/en/1.11/ref/contrib/staticfiles/#manifeststaticfilesstorage

Lo de subir a CDN's es algo que también se puede hacer "mágicamente" a
través de este API.

Si tienes un rato te recomiendo invertirlo en hacer una prueba de
concepto con django y alguna de sus librerias. Si te gusta el
resultado con los assets, pero descartas django por lo que sea,
siempre puedes partir de algo tipo flask-storage para montar el
equivalente de django en flask. Lo mismo encuentras algo ya en esa
dirección que no implique tanto trabajo, no lo se.

Lo único que tengo claro es que el concepto de Storage convierte en
trivial los siguientes problemas:
- Versionado de ficheros
- Obtener url del fichero para referenciarlos desde los htmls generados
- Recolectar estáticos para subirlos a una CDN
- ¿? (rellena aquí cosas que se te puedan ocurrir como distribuir
estáticos en maquinas static[1-6].dominio.com)

El tema de generar ficheros minificados, transpiling, source map, css
sprites, ... es un problema de como generar esos ficheros que guardar
en el Storage y parece que lo tienes más trillado. Así que es muy
posible que puedas resolverlo de forma elegante y a tu gusto con una
capa por encima (que es en esencia lo que hacen las soluciones de
asset-management de django). Luego vienen los detalles de si minifican
al hacer el collectstatic o bajo demanda al renderizar unos tags de
assets en la plantilla bajo demanda o ... Que es por lo que te puse
dos ejemplos que usaba por comodidad/conveniencia en unos casos u
otros, con una calidad que me pareció suficiente en su día.

Esto que te cuento no es una solución, pero espero que te ayude en
solventar tu problema ;-)

Un abrazo,

Javi


Más información sobre la lista de distribución Python-es