Django-Bower + Foundation 5 + SASS, как настроить?
Я нахожусь в процессе тестирования реализации SASS Foundation 5 с использованием Django-Bower. Я новичок в идее Бауэра и немного путаюсь, как правильно настроить эту установку.
У меня установлена и настроена django-bower. После того, как я добавил фундамент в конфигурацию приложений Bower и запустил manage.py bower_install
Я вижу, что базовые файлы действительно были установлены правильно. Я также могу использовать статический тег для загрузки JS в шаблон без проблем, поэтому я чувствую, что я на полпути.
Моя проблема заключается в том, как на самом деле использовать базовые файлы, которые установлены вместе с моими пользовательскими файлами SASS, и как лучше всего скомпилировать эти файлы SASS в CSS. Я знаю, что я должен иметь возможность включить фундамент в мой SASS с @include "foundation"
но я заблудился о том, как заставить файл SASS "видеть" файлы фундамента в компонентах / bower_components / foundation / sass и как настроить компиляцию, чтобы поместить CSS в правильный статический файл.
ОБНОВЛЕНИЕ:
PyCharm имеет возможность просматривать файлы sass и компилировать их, поэтому теперь у меня есть возможность компилировать файлы, но когда я пытаюсь импортировать тональный файл, я получаю error blog3.sass (Line 1: File to import not found or unreadable: foundation.
Для справки, вот моя файловая структура:
├── blog3
│ └── __pycache__
├── components
│ └── bower_components
│ ├── foundation
│ │ ├── css
│ │ ├── js
│ │ │ ├── foundation
│ │ │ └── vendor
│ │ └── scss
│ │ └── foundation
│ │ └── components
│ ├── jquery
│ └── modernizr
│ ├── feature-detects
│ ├── media
│ └── test
│ ├── caniuse_files
│ ├── js
│ │ └── lib
│ └── qunit
└── interface
├── migrations
│ └── __pycache__
├── __pycache__
├── sass
└── templates
└── interface
Это мой settings.py
"""
Django settings for blog3 project.
For more information on this file, see
https://docs.djangoproject.com/en/dev/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/dev/ref/settings/
"""
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/dev/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '...'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
TEMPLATE_DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'annoying',
'django_extensions',
'djangobower',
'interface',
)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
ROOT_URLCONF = 'blog3.urls'
WSGI_APPLICATION = 'blog3.wsgi.application'
# Database
# https://docs.djangoproject.com/en/dev/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# Internationalization
# https://docs.djangoproject.com/en/dev/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/dev/howto/static-files/
STATIC_URL = '/static/'
STATICFILES_FINDERS = (
'djangobower.finders.BowerFinder',
)
BOWER_COMPONENTS_ROOT = os.path.join(BASE_DIR, "components")
BOWER_INSTALLED_APPS = (
'jquery',
'foundation',
)
2 ответа
РЕШЕНИЕ БЕЗ PYCHARM WATCHER
- Не использую Pycharm Watcher.
- django-компрессор для компиляции файлов scss, включая компас.
- Джанго-Беседка
Это пример "как скомпилировать файлы scss" с помощью django-compress:
APPNAME / статический / СКС / app.scss:
@import "../../../components/bower_components/foundation/scss/foundation";
@import "compass";
/* other stuff*/
settings.py:
STATICFILES_FINDERS = (
.....
'compressor.finders.CompressorFinder',
)
COMPRESS_PRECOMPILERS = (
('text/x-sass', 'sass --compass "{infile}" "{outfile}"'),
('text/x-scss', 'sass --scss --compass "{infile}" "{outfile}"'),
)
COMPRESS_URL = '/static/'
template.html:
{% load static %}
{% load compress %}
<head>
{% compress css %}
<link href="{% static 'scss/app.scss' %}" media="screen, projection" rel="stylesheet" type="text/x-scss" />
{% endcompress %}
</head>
Надеюсь, это поможет вам.
РЕДАКТИРОВАТЬ
Может быть, это лучшая конфигурация для использования @import без путей к родственникам.-I
Arg:
PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))
BOWER_COMPONENTS_ROOT = os.path.join(PROJECT_PATH, "../components/")
COMPRESS_PRECOMPILERS = (
('text/x-sass', 'sass --compass "{infile}" "{outfile}"'),
('text/x-scss', 'sass --scss --compass -I "%s/bower_components/foundation/scss" "{infile}" "{outfile}"' % BOWER_COMPONENTS_ROOT),
)
Теперь app.scss:
@import "foundation";
@import "compass";
ИСПОЛЬЗОВАНИЕ PYCHARM WATCHER
В последнее время я ценю наблюдателя pycharm
- Установите Джанго-Бауэр
- Добавить наблюдателя SCSS из настроек Pycharm
В редакторе наблюдателя в поле "Аргументы" я установил:
--compass -I "/ $ ProjectFileDir $ / components / bower_components / foundation / scss" --no-cache --update $ FileName $: $ FileNameWithoutExtension $.css
Итак, в файле scss:
@import "foundation";
@import "compass";
Пакеты:
- Джанго-газопровод
- Джанго-Беседка
Как скомпилировать с django-pipe:
application.scss:
@import "../../../components/bower_components/foundation/scss/foundation";
settings.py:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'pipeline',
'djangobower',
)
BOWER_COMPONENTS_ROOT = os.path.join(BASE_DIR, 'components')
STATICFILES_FINDERS = (
.....
'djangobower.finders.BowerFinder', # just for bower components
)
PIPELINE_CSS = {
'application': {
'source_filenames': (
'css/application.scss',
),
'output_filename': 'css/application.css',
'extra_context': {
'media': 'screen,projection',
},
},
}
PIPELINE_COMPILERS = (
'pipeline.compilers.sass.SASSCompiler',
)
Тогда в шаблоне:
{% load compressed %}
{% compressed_css 'application' %}
Это скомпилирует на developmnt, а на collectstatic скомпилирует и сожмет