Django-compressor: sammeln, verketten und *dann* an Filter übergeben?

Erstellt am 15. Apr. 2011  ·  6Kommentare  ·  Quelle: django-compressor/django-compressor

Hi! Gibt es überhaupt, das CSS oder JS in einem bestimmten Block zu sammeln und zu verketten und _dann_ durch eine Filterkette zu leiten? Insbesondere möchte ich pyScss verwenden, um mein SCSS zu verarbeiten. Ich habe ein pySCSSFilter das FilterBase , und würde gerne etwas tun wie:

{% compress css %}
<link rel="stylesheet" type="text/css" media="screen" href="{{ MEDIA_URL }}css/mixins.scss" />
<link rel="stylesheet" type="text/css" media="screen" href="{{ MEDIA_URL }}css/base.scss" />
<link rel="stylesheet" type="text/css" media="screen" href="{{ MEDIA_URL }}css/other.scss" />
{% endcompress %}

funktioniert aber natürlich nicht, da meine Dateien isoliert voneinander verarbeitet werden.

Gibt es einen Weg?

Danke schön!

feature

Hilfreichster Kommentar

Es ist sehr wichtig, wenn Sie CSS-Präprozessoren verwenden, z. B. weniger, ihre "Kernfunktion" erlaubt die Verwendung von Mixins. Daher ist das Verketten von Dateien vor der Verarbeitung durch Filter eine unverzichtbare Funktion. Gibt es Pläne, @jannon- Anforderungen zusammenzuführen, um den Dev-Zweig django_compressor zu erstellen?

Alle 6 Kommentare

Hm genau das würde ich nicht wollen.

Was ist, wenn sie sich nicht im selben Basispfad befinden und dieselben

Im Moment funktioniert

Ich sage die Dateien einzeln verarbeiten und dann verketten, damit alle Referenzen für die Kompilierung korrekt sind.

Ich werde eine Stimme für eine Möglichkeit abgeben, die Dateien vor dem Vorkompilieren zu verketten. Dies wäre sehr hilfreich bei der Verwendung von less usw., da ein Standway darin besteht, Mixins und globale Variablen in einer Datei zu halten und sie vor dem Kompilieren zusammenzuführen. Im Moment müssen Sie diese Vars und Mixins in jeder CSS-Datei wiederholen, dh wenn Sie eine Reihe von globalen Vars für Hautfarben haben, die in mehreren CSS-Dateien verwendet werden, was den Zweck der Verwendung globaler Vars in CSS-Frameworks wie Sass oder weniger ruiniert , es sei denn, Sie speichern alles in einer Datei.

Ich verstehe das Problem, das hvdklauw erwähnt, also könnte es vielleicht eine Option für jeden Komprimierungsblock sein, ob vor dem Vorkompilieren oder danach zusammengeführt werden soll oder nicht?

@gensmann Das Hinzufügen einer Option zum Komprimierungsblock klingt nach einem Plan, ja.

Es ist sehr wichtig, wenn Sie CSS-Präprozessoren verwenden, z. B. weniger, ihre "Kernfunktion" erlaubt die Verwendung von Mixins. Daher ist das Verketten von Dateien vor der Verarbeitung durch Filter eine unverzichtbare Funktion. Gibt es Pläne, @jannon- Anforderungen zusammenzuführen, um den Dev-Zweig django_compressor zu erstellen?

In Bezug auf Sass besteht mein Ansatz darin, alle Includepfade für die Sass-Binärdatei zu definieren und dann @import die anderen Dateien in meinen scss-Dateien:

# app/settings/common.py
...
scss_args = " ".join(["--include-path %s/vendor/bourbon/app/assets/stylesheets/" % VENDOR_ROOT,
                      "--include-path %s/vendor/bootstrap-sass-official/vendor/assets/stylesheets/" % VENDOR_ROOT])
...

COMPRESS_PRECOMPILERS = (
    ('text/coffeescript', 'node_modules/.bin/coffee --compile --stdio'),
    ('text/x-scss', 'node_modules/.bin/node-sass %s {infile} {outfile}' % scss_args)
)
...
// app/common/static/css/screen.scss
<strong i="9">@import</strong> url("http://fonts.googleapis.com/css?family=Montserrat:400,700");
<strong i="10">@import</strong> "./vendor.scss";
<strong i="11">@import</strong> "./elements.scss";
<strong i="12">@import</strong> "./pages.scss";

body, html {
    font-family: 'Montserrat';
}
// app/common/static/css/vendor.scss
<strong i="15">@import</strong> "_bourbon.scss";
<strong i="16">@import</strong> "bootstrap.scss";
<! -- app/common/templates/base.html -->
...
{% compress css %}
<link href="{% static 'css/screen.scss' %}" type='text/x-scss' media='screen, projector' rel='stylesheet'>
{% endcompress %}
...

@airtonix Ich habe damit angefangen, aber die Änderungen an allen @import -Dateien werden nicht überwacht, und daher muss der Server für jede CSS-Änderung neu gestartet werden.
Irgendwie erstaunt, dass diese Funktion noch nicht implementiert wurde. webassets löste dies und ermöglichte es Benutzern, SASS_AS_OUTPUT = True , das optional die Dateien zuerst verkettet.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen