Я вроде как в той же привязке, и это то, что я придумал для самых последних версий компрессоров и lessc для интеграции со статическими файлами.Надеюсь, это поможет некоторым другим людям
Насколько я могу судить из экспериментов, lessc
не имеет понятия об абсолютных или относительных путях.Скорее, он поддерживает путь поиска, который включает в себя текущий каталог, каталог, содержащий файл меньшего размера, и все, что вы передаете ему через --include-path
, поэтому в моей конфигурации для компрессора я поместил
COMPRESS_PRECOMPILERS = (
('text/less', 'lessc --include-path=%s {infile} {outfile}' % STATIC_ROOT),
)
Скажем, после запуска collectstatic
У меня есть начальная загрузка, живущая по
STATIC_ROOT/bootstrap/3.2.0/bootstrap.css.
Тогда из любого меньшего файла я теперь могу написать
@import (less, reference) "/bootstrap/3.2.0/bootstrap.css"
, что позволяет мнеиспользовать классы начальной загрузки как меньшее количество миксинов в любом из моих файлов поменьше!
Каждый раз, когда я обновляю файл меньшего размера, я должен запускать collectstatic для агрегирования их в локальном каталоге, чтобы компрессор мог дать less
правильные исходные файлы для работы.В противном случае компрессор справится со всем без проблем.Вы также можете использовать collectstatic -l
для символической ссылки, что означает, что вам нужно собирать файлы только при добавлении нового.
Я рассматриваю реализацию команды управления для сглаживания процесса разработки, который подклассов runserver
для вызова collectstatic
каждый раз, когда сервер перезагружается, или используется django.utils.autoreload
для прямого вызова collectstatic
при обновлении.
Редактировать (2014/12/01): мой подход, как описано вышетребуется локальный статический корень.В своей производственной среде я использовал удаленное хранилище с автономным сжатием, поэтому для развертывания требуется пара дополнительных шагов.В дополнение к вызову collectstatic
для синхронизации статических файлов с удаленным хранилищем я вызываю collectstatic
с другим файлом конфигурации django, который использует локальное хранилище.После того, как я собрал файлы локально, я могу вызвать «компресс», настроив его для загрузки файлов результатов в удаленное хранилище, но в локальном хранилище ищите исходные файлы.