Django-compressor: Soporte para mapas fuente js

Creado en 4 sept. 2013  ·  20Comentarios  ·  Fuente: django-compressor/django-compressor

Los mapas fuente son una herramienta muy buena para depurar algo en código comprimido usando Chrome Dev Tools. Hay muchas herramientas que las generan, incluido el cierre de Google que ya es compatible con django-compressor.

Aquí hay algo de información: https://github.com/ryanseddon/source-map/wiki/Source-maps%3A-languages , -tools-and-other-info

feature

Comentario más útil

Los mapas de origen también los usa el centinela https://www.getsentry.com/docs/sourcemaps/

Todos 20 comentarios

Estoy dispuesto a implementarlo, pero me gustaría saber si hay algún interés en esta función.

Hasta ahora he estado leyendo el código para tener una idea de lo que se necesita para lograrlo.

Primero, en el lado de las etiquetas de la plantilla, hay al menos dos opciones para activar los mapas de origen, un parámetro para el compresor o un compresor diferente: {% compress js sourcemap %} o {% compress js-sourcemaps %}

Luego, si la opción de mapas de origen está activada, el compresor debe verificar que todos los trozos sean archivos porque no se pueden generar mapas de origen en línea (creo que no estoy completamente seguro).

Finalmente, quizás la parte más complicada, se necesita un backend de compresor que pueda manejar una lista de archivos y generar los js comprimidos y el archivo de mapa de origen.

Me encantaría recibir comentarios sobre esto para saber si estoy en el buen camino o si me equivoqué.

Esto puede ser posible con la cadena de herramientas existente. Me las arreglé para obtener soporte de sourceMapURL básico para CSS a través de SASS.

por ejemplo, https://gist.github.com/Nagyman/6542739

Esto es muy preliminar; algunas limitaciones conocidas se mencionan en los comentarios.

Estoy interesado. Sería fácil depurar rápidamente el código de ensayo.
¿Algún avance en esta función?

Sí, actualmente estoy trabajando en esta función.

@sicarrots Estoy usando mapas de origen cuando settings.DEBUG ya que el compresor simplemente pasa por las etiquetas originales, pero parece bastante complicado hacer que funcionen después de la concatenación y reubicación. ¿Cómo lo afrontas?

Estoy teniendo éxito experimentando con Compressor y uglify.js. Por ahora, he subclasificado el JsCompressor y anulado output para trabajar en toda la cadena de filtro / concat / filtro y solo uso Uglify para todas las actividades (concat, comprimir, generar mapas de origen).

Los mapas de origen también los usa el centinela https://www.getsentry.com/docs/sourcemaps/

@fetzig Exactamente mi razón de ser para hacer eso

@Kos ¿Podrías pegar algún código con fines de inspiración? Gracias B)

Esto es lo que terminé usando: https://gist.github.com/Kos/9270494 (tengo compresión fuera de línea en producción y no compresión en desarrollo)

El siguiente paso sería permitir el uso de {% compress js %} para el JsCompressor normal (porque la cadena filter / concat / filter a veces se vuelve útil) y configurar algo como {% compress uglify %} para usar mi clase personalizada, pero no he descubierto una manera de hacerlo mediante la configuración.

editar:: cervezas: :-)

: cervezas: @Kos!

+1 para esa función.

Para los mapas de origen de JS, encontré que:
http://roverdotcom.github.io/blog/2014/05/28/javascript-error-reporting-with-source-maps-in-django/
con el complemento correspondiente del compresor de django
https://github.com/roverdotcom/django-compressor-sourcemaps/

+1 También me gustaría esta función. Es muy útil poder depurar archivos comprimidos JS en producción. Los errores de centinela no tienen mucho sentido si no.

+1 para la función, absolutamente necesario para errores de Sentry :)

+1 para mapas de origen js y css

Me gustaría ver js / ES6 / coffee (incluso TypeScript) y css / sass / less source map
🍻

¿Compress todavía no es compatible con la función de mapas de origen?

No, todavía no es compatible con esa función. Le invitamos a enviar un PR implementando esto.

Todavía es posible implementar alguna solución "pirateada", por ejemplo:
https://bitbucket.org/imposeren/tabletop-planning/src/7d551806cfee2c5493b7273e40c5448aec480544/tabletop_tools/compressor_filters.py?at=master

Se requiere una mejor solución para hacer PR ...

¿Fue útil esta página
0 / 5 - 0 calificaciones