2016-07-13 59 views
1

我有一个Django应用程序,并在应用程序中试图捆绑和缩小所有Javascript文件和CSS文件。django-pipeline:为什么这些JS系列会导致yui-compressor崩溃?

为此,我使用了django-pipeline 1.2.6,并且配置了我的设置文件,以便它使用默认的YUICompressor来压缩JS和CSS文件。我的设置文件配置是这样的:

... 

# 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 

当我运行的命令python src/foo_app/manage.py collectstatic,我得到了“断管”的例外。由于JS的问题,我很快意识到yui-compressor正在崩溃。所以我开始隔离导致yui-compressor崩溃的文件和代码行。

我最终把范围缩小到定义在一个jQuery弹出的按钮类属性的两行:

$('#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 
      } 
     ], 
    }); 

当我删除这些类的定义,锐压缩机压缩我的JS就好了。然而,包含这些行,yui压缩机崩溃。

这些线路为什么会导致压缩机崩溃?这是有效的Javascript,并且这会正确设置这些按钮的类。

回答

1

也许这与yui-compressor ES6 class关键字处理有关。尝试包class关键引号:

改变这一点:

class : 'foo-class bar-class' // <- this line 

到:

'class' : 'foo-class bar-class' // <- this line 
+0

这似乎已经解决了这个问题。谢谢。 –