Django-compressor: reunir, concatenar e * então * passar para os filtros?

Criado em 15 abr. 2011  ·  6Comentários  ·  Fonte: django-compressor/django-compressor

Oi! Existe alguma maneira de coletar e concatenar o CSS ou JS em um bloco específico e _então_ passá-lo por uma cadeia de filtros? Em particular, gostaria de usar pyScss para processar meu SCSS. Eu criei um pySCSSFilter estendendo FilterBase e realmente gostaria de fazer algo como:

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

mas é claro que não funciona porque meus arquivos são processados ​​isoladamente.

Há algum caminho?

Saúde!

feature

Comentários muito úteis

É muito importante ao usar pré-processadores css menos, seu recurso 'principal' é permitir o uso de mixins. Portanto, concatenar arquivos antes do processamento por meio do filtro é uma funcionalidade obrigatória. Existe algum plano para mesclar as solicitações

Todos 6 comentários

Hmm, isso é exatamente o que eu não gostaria.

E se eles não estiverem no mesmo caminho base e tiverem as mesmas instruções @import , mas

No momento, o @import nem funciona porque o conteúdo do arquivo é gravado em um arquivo temporário antes de ser passado para o processador.

Eu digo para processar os arquivos um por um e depois concatenar para que todas as referências para compilação estejam corretas.

Apoiarei uma votação para uma maneira de concatenar os arquivos antes de pré-compilar. Isso seria muito útil ao usar menos etc., uma vez que uma alternativa é manter mixins e variáveis ​​globais em um arquivo e mesclá-lo antes de compilar. Agora você tem que repetir esses vars e mixins em cada arquivo css, ou seja, se você tiver um conjunto de vars globais de cor de pele que é usado em vários arquivos css, o que meio que estraga o propósito de usar vars globais em estruturas css como sass ou menos , a menos que você mantenha tudo em um arquivo.

Eu entendo o problema que hvdklauw menciona, então talvez pudesse ser uma opção em cada bloco de compactação, mesclar ou não antes da pré-compilação ou depois?

@gensmann Adicionar uma opção ao bloco de compressão soa como um plano, sim.

É muito importante ao usar pré-processadores css menos, seu recurso 'principal' é permitir o uso de mixins. Portanto, concatenar arquivos antes do processamento por meio do filtro é uma funcionalidade obrigatória. Existe algum plano para mesclar as solicitações

com relação ao Sass, minha abordagem para isso é definir todos os caminhos de inclusão para o binário sass e, em seguida, @import os outros arquivos em meus arquivos scss:

# 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 eu comecei a fazer isso, mas as alterações em quaisquer @import 'arquivos não são monitorados e, portanto, o servidor precisa ser reiniciado para cada alteração de css neles.
Estou espantado com o fato de que esse recurso ainda não foi implementado. webassets resolveu isso, permitindo aos usuários usar SASS_AS_OUTPUT = True , que opcionalmente concatra os arquivos primeiro.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

camilonova picture camilonova  ·  7Comentários

oesah picture oesah  ·  6Comentários

alper picture alper  ·  24Comentários

badbye picture badbye  ·  10Comentários

dasloss picture dasloss  ·  6Comentários