Django-compressor: kumpulkan, gabungkan, dan *lalu* berikan ke filter?

Dibuat pada 15 Apr 2011  ·  6Komentar  ·  Sumber: django-compressor/django-compressor

Hai! Apakah ada cara untuk mengumpulkan dan menggabungkan CSS atau JS di blok tertentu dan _kemudian_ meneruskannya melalui rantai filter? Secara khusus, saya ingin menggunakan pyScss untuk memproses SCSS saya. Saya telah membuat pySCSSFilter memperluas FilterBase , dan saya benar-benar ingin melakukan sesuatu seperti:

{% 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 %}

tetapi tentu saja tidak akan berfungsi karena file saya diproses secara terpisah satu sama lain.

Apakah ada cara?

Bersulang!

feature

Komentar yang paling membantu

Sangat penting ketika menggunakan praprosesor css lebih sedikit, fitur 'inti'-nya memungkinkan untuk menggunakan mixin. Oleh karena itu, menggabungkan file sebelum diproses melalui filter adalah fungsi yang harus dimiliki. Apakah ada rencana untuk menggabungkan @jannon permintaan melakukan dev django_compressor cabang?

Semua 6 komentar

Hmm justru itu yang tidak saya inginkan.

Bagaimana jika mereka tidak berada di jalur dasar yang sama, dan memiliki pernyataan @import yang sama tetapi merujuk file yang berbeda karena mereka berada di jalur yang berbeda.

Saat ini @import bahkan tidak berfungsi karena konten file ditulis ke file sementara sebelum diteruskan ke prosesor.

Saya katakan proses file satu per satu dan kemudian gabungkan sehingga semua referensi untuk kompilasi sudah benar.

Saya akan memilih cara untuk menggabungkan file sebelum melakukan pra-kompilasi. Ini akan sangat membantu saat menggunakan less dll. karena standarnya adalah menyimpan mixin dan variabel global dalam satu file dan menggabungkannya sebelum dikompilasi. Saat ini Anda harus mengulangi vars dan mixin di setiap file css yaitu jika Anda memiliki satu set vars global warna kulit yang digunakan dalam banyak file css, yang merusak tujuan penggunaan vars global dalam kerangka kerja css seperti sass atau kurang , kecuali jika Anda menyimpan semuanya dalam satu file.

Saya mengerti masalah yang disebutkan hvdklauw, jadi mungkin itu bisa menjadi opsi pada setiap blok kompres apakah akan digabungkan atau tidak sebelum pra-kompilasi atau sesudahnya?

@gensmann Menambahkan opsi ke blok kompres terdengar seperti rencana, ya.

Sangat penting ketika menggunakan praprosesor css lebih sedikit, fitur 'inti'-nya memungkinkan untuk menggunakan mixin. Oleh karena itu, menggabungkan file sebelum diproses melalui filter adalah fungsi yang harus dimiliki. Apakah ada rencana untuk menggabungkan @jannon permintaan melakukan dev django_compressor cabang?

sehubungan dengan Sass, pendekatan saya untuk ini adalah untuk mendefinisikan semua includepaths untuk biner sass kemudian @import file lain di file scss saya:

# 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 Saya mulai melakukan ini, tetapi perubahan pada file @import 'ed tidak ditonton, sehingga server perlu dimulai ulang untuk setiap perubahan css di dalamnya.
Agak heran fitur ini belum diimplementasikan. webassets memecahkan ini, memungkinkan pengguna untuk menggunakan SASS_AS_OUTPUT = True , yang secara opsional menggabungkan file terlebih dahulu.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat