2014-11-06 1 views
5

Мы используем django-compressor и приложение django.contrib.staticfiles, и у нас возникают проблемы при запуске сервера разработки django и работе с нашим SCSS: неправильные файлы SCSS получают скомпилирован. Версии, которые находятся в STATIC_ROOT/app, получаются, а не версии в приложении/static. Это делает так, чтобы изменения в SCSS в app/static не отражались в скомпилированном CSS.django-compressor компилирует файлы SCSS в STATIC_ROOT/app вместо приложения/static

Снятие всего в STATIC_ROOT/app устраняет проблему, но вызывает некоторую путаницу, если по какой-то причине выполнено collectstatic.

Есть ли способ убедиться, что файлы приложения/статические файлы скомпилированы, а не любые существующие файлы STATIC_ROOT/app?

Мы используем Джанго-компрессор 1.4 с Джанго 1.6 и следующие параметры используются в файле настроек Джанго:

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') 
+0

Можете ли вы поделиться своими настройками 'STATICFILES_DIRS' и' STATIC_ROOT'? – richardcornish

+0

Только что отредактирован с помощью 'STATICFILES_DIRS' (который только по умолчанию) и' STATIC_ROOT'. – mstringer

+0

Что такое 'приложение'? Это приложение Django, проект Django или что-то еще? Где находится приложение «app/static»? И добавлено ли это в 'INSTALLED_APPS'? – richardcornish

ответ

1

sass --scss Ваш COMAND в COMPRESS_PRECOMPILERS прямо не указывается целевой каталог. Следовательно, используется значение по умолчанию, которое seems to be stdin and stdout.

В настоящее время документация на компрессор не совсем понятна: с использованием stdout; но, из приведенных примеров, кажется, что файлы будут в конечном итоге в COMPRESS_ROOT (по умолчанию STATIC_ROOT/CACHE в вашем случае является root/base/static/CACHE/)

То, что я лично хотел, чтобы четко указаны в/из каталогов (остаются постоянными в различных средах) , Вот пример (с использованием 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), 
) 

(извините, если перекопали давно забытые вопросы)

0

Использование django-libsass:

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

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

Обязательно настройте STATIC_URL и STATIC_ROOT правильно, как описано в..

Например:

STATIC_URL = '/static/' 
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"), 
) 
STATIC_ROOT = os.path.join(BASE_DIR, 'static_collected') 

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
    'compressor.finders.CompressorFinder', 
) 

Компрессор позаботится об остальном, соответственно, в зависимости от переменной DEBUG.

 Смежные вопросы

  • Нет связанных вопросов^_^