【问题标题】:django-pipeline not compiling sass filesdjango-pipeline 不编译 sass 文件
【发布时间】:2012-05-27 05:11:14
【问题描述】:

我将 django-1.3 与 django-staticfiles-1.2.1 和 django-pipeline-1.2.6 一起使用 此设置应根据文档进行。

在我的项目的根目录中,我有一个目录staticfiles,其中包含一个目录sass,其中包含我的 sass 文件。 我希望看到 django-pipeline 编译我的 sass 文件并将它们放入 /static/css/master.css

这是我的 settings.py 文件的摘录

MEDIA_ROOT = '/home/jonasg/dev/projectX/media/' 

STATIC_ROOT = 'static/'
STATIC_URL = '/static/'   
PIPELINE=True
PIPELINE_AUTO=True
STATICFILES_STORAGE = 'pipeline.storage.PipelineStorage'
STATICFILES_DIRS = ( 
    'staticfiles',
    )   
PIPELINE_COMPILERS = ( 
      'pipeline.compilers.sass.SASSCompiler',
      )   
PIPELINE_CSS_COMPRESSOR = 'pipeline.compressors.cssmin.CssminCompressor'

PIPLINE_CSS = { 
    'base': {
        'source_filenames': (
            'sass/*.sass'
            ),                                                                                                                                    
        'output_filename': 'css/master.css'
        }   
    }   
PIPELINE_COMPILERS = ( 
      'pipeline.compilers.sass.SASSCompiler',
      )   
PIPELINE_SASS_BINARY='/usr/bin/sass'
STATICFILES_FINDERS = ( 
         'staticfiles.finders.FileSystemFinder',
         'staticfiles.finders.AppDirectoriesFinder',
         'staticfiles.finders.DefaultStorageFinder'
      )   

当我运行 ./manage.py collectstatic 时,/staticfiles 中的所有文件都被复制到 /static 中,但没有任何内容被编译或缩小。 我还注意到这个命令从 /media 获取所有内容并将它们放在 /static 中,这不是我所期望的行为。

正如您在上面可能已经注意到的那样,我正在使用 django-staticfiles,如果您仍在使用 django-1.3,django-pipeline 建议使用它。如果此应用程序已迁移到 django-1.3,我不明白为什么要坚持使用 django-staticfiles ?

【问题讨论】:

  • PIPLINE_CSS 似乎拼错了

标签: python django sass


【解决方案1】:

SASS 编译器希望您的 sass 文件具有扩展名 .scss。 看起来 SASS 添加了另一个扩展/语法,它将在下一个版本的管道中修复。

不要忘记像这样更改您的静态文件存储:

STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage'

【讨论】:

  • 我在我的 settings.py 中修复了这个问题,但这并没有真正的帮助。现在 staticfiles/sass/*.scss 文件只是复制到 static/sass/*.scss,我希望它压缩并创建一个 staticfiles/css/master.css 文件。
  • 看起来你没有正确设置STATICFILES_STORAGE,我已经编辑了我的问题以简洁。
  • 现在我偶然发现:ValueError:在 中找不到文件 'icons/Gear.png'。虽然 ./manage.py findstatic img/icons/Gear.png 确实返回良好并且 icons/Gear.png 没有找到该文件。该文件位于 staticfiles/img/icons/Gear.png
  • 表示css文件没有正确指向Gear.png,staticfiles无法打开。 Urls 应该相对于 CSS 文件的位置声明。
  • 管道 1.2.7 也已发布,现在支持 .sass 扩展。
【解决方案2】:

我遇到了同样的问题,这是我的解决方法, 添加

PIPELINE_STORAGE = 'pipeline.storage.PipelineCachedStorage'

在您的设置中。至少对我有用。

【讨论】:

    猜你喜欢
    • 2014-07-04
    • 2018-07-17
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    相关资源
    最近更新 更多