Djangompressure以静态的\u ROOT/app而不是app/stati编译SCSS文件

2024-05-23 19:24:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我们正在使用django-compressordjango.contrib.staticfiles应用程序,在运行django开发服务器和处理scs时遇到问题:编译了错误的SCSS文件。{3>中的版本是中的静态版本,而不是静态版本。这使得对app/static中scs的编辑不会反映在编译的CSS中。在

删除STATIC_ROOT/app中的所有内容可以修复此问题,但是如果出于某种原因执行collectstatic,则会导致很多混乱。在

有没有办法确保编译的是app/静态文件,而不是任何现有的静态根/应用文件?在

我们将django compressor 1.4与django 1.6一起使用,django设置文件中使用了以下设置:

STATICFILES_FINDERS = (
    "django.contrib.staticfiles.finders.FileSystemFinder",
    "django.contrib.staticfiles.finders.AppDirectoriesFinder",
    'compressor.finders.CompressorFinder',
)
COMPRESS_PRECOMPILERS = (
    ("text/x-scss", 'sass --scss'),
)
STATICFILES_DIRS = [] #default
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')

Tags: 文件django版本app静态staticrootcontrib
2条回答

使用django-libsass

COMPRESS_PRECOMPILERS = (
    ('text/x-sass', 'django_libsass.SassCompiler'),
    ('text/x-scss', 'django_libsass.SassCompiler'),
)

https://github.com/torchbox/django-libsass

确保按照https://docs.djangoproject.com/en/1.8/howto/static-files/中所述正确配置STATIC_URL和{}。在

例如:

^{pr2}$

压缩机将根据DEBUG变量适当处理其余部分。在

您在COMPRESS_PRECOMPILERS中的sass scss命令没有显式地声明目标目录。因此使用默认值,seems to be ^{} and ^{}。在

现在,压缩器文档不太清楚使用stdout意味着什么;但是,从示例来看,文件似乎将以COMPRESS_ROOT结尾(默认为STATIC_ROOT/CACHE,在您的例子中是root/base/static/CACHE/

我个人喜欢显式地声明in/out目录(在不同的环境中保持不变)。下面是一个示例(使用pyScss编译器,但想法是相同的):

scss_cmd = '{python} -mscss -A "{image_output_path}" -a "{static_url}" ' \
    '-S "{static_root}" -o "{{outfile}}" "{{infile}}"'.format(
        python=sys.executable,
        image_output_path=COMPRESS_ROOT,
        static_url=STATIC_URL,
        static_root=os.path.join(PROJECT_ROOT),
    )

COMPRESS_PRECOMPILERS = (
    ('text/x-scss', scss_cmd),
)

(很抱歉,如果挖掘出被遗忘已久的问题)

相关问题 更多 >