Ich habe eine Django-App, und innerhalb der App versuche ich, alle Javascript-Dateien und CSS-Dateien zu bündeln und zu minimieren.Django-Pipeline: Warum verursachen diese JS-Linien einen Absturz des yui-Kompressors?
Dazu benutze ich django-pipeline 1.2.6, und ich habe meine Einstellungsdatei so konfiguriert, dass sie den Standard-YUICompressor verwendet, um JS- und CSS-Dateien zu komprimieren. Meine Einstellungen Datei wird wie folgt konfiguriert:
...
# PIPELINE SETTINGS (for compressing/bundling css and js files)
STATICFILES_STORAGE = "pipeline.storage.PipelineCachedStorage"
PIPELINE_YUI_BINARY = "/usr/bin/yui-compressor"
PIPELINE_JS = {
'min': {
'source_filenames': (
"js/*.js",
),
'output_filename': 'js/min.js'
}
}
PIPELINE_CSS = {
...
}
PIPELINE = True
Als ich lief den Befehl python src/foo_app/manage.py collectstatic
, bekam ich die „Rohrbruch“ Ausnahme. Ich erkannte schnell, dass der Yui-Kompressor wegen eines Problems mit dem JS abstürzte. Also begann ich damit, die Datei und die Codezeile zu isolieren, die den Yui-Kompressor zum Absturz brachten.
verengt ich es schließlich zu zwei Zeilen nach unten, die das Klassenattribut für die Schaltflächen auf einem jquery Popup definieren:
$('#some-modal').dialog({
...
buttons: [
{
text : 'Print',
click : function() {
...
},
class : 'foo-class bar-class' // <- this line
},
{
text : 'Close',
click : function() {
...
},
class : 'foo-class bar-class' // <- this line
}
],
});
Wenn ich diese Klassendefinitionen entfernen, Yui-Kompressor komprimiert ganz gut meine JS. Mit diesen Zeilen stürzt yui-compressor jedoch ab.
Warum würden diese Leitungen den Kompressor zum Absturz bringen? Dies ist ein gültiges Javascript, und dies setzt die Klasse dieser Schaltflächen korrekt.
Dies scheint das Problem gelöst zu haben. Vielen Dank. –