Estou modularizando minhas folhas de estilo com parciais SASS da seguinte forma:
@import partials/header
@import partials/viewport
@import partials/footer
@import partials/forms
@import partials/list_container
@import partials/info_container
@import partials/notifications
@import partials/queues
existe uma maneira de incluir todo o diretório de parciais (é um diretório cheio de parciais do SASS) como @import compass ou algo assim?
@import 'partials/header', 'partials/viewport', 'partials/footer';
.Respostas:
Se você estiver usando o Sass em um projeto Rails, a gema sass-rails, https://github.com/rails/sass-rails , apresenta a importação global.
Para responder à preocupação em outra resposta "Se você importa um diretório, como pode determinar a ordem de importação? Não há como não introduzir um novo nível de complexidade".
Alguns argumentam que organizar seus arquivos em diretórios pode reduzir a complexidade.
O projeto da minha organização é um aplicativo bastante complexo. Existem 119 arquivos Sass em 17 diretórios. Elas correspondem aproximadamente às nossas opiniões e são usadas principalmente para ajustes, com o trabalho pesado sendo tratado por nossa estrutura personalizada. Para mim, algumas linhas de diretórios importados são um pouco menos complexas que 119 linhas de nomes de arquivos importados.
Para endereçar a ordem de carregamento, colocamos os arquivos que precisam ser carregados primeiro - mixins, variáveis etc. - em um diretório de carregamento antecipado. Caso contrário, a ordem de carregamento é e deve ser irrelevante ... se estivermos fazendo as coisas corretamente.
fonte
@import "*"
(em application.css.scss) se os arquivos css / scss do controlador estiverem na pasta "app / assets / stylesheets" junto com application.css.scss.@import "*"
em application.scss inclua todos os outros arquivos presentes no mesmo diretório, mas não inclua novamente application.scss ... Eu esperava receber um bug em loop infinito.Esse recurso nunca fará parte do Sass. Um dos principais motivos é o pedido de importação. Em CSS, os arquivos importados por último podem substituir os estilos declarados anteriormente. Se você importa um diretório, como pode determinar o pedido de importação? Não há como não introduzir um novo nível de complexidade. Mantendo uma lista de importações (como você fez no seu exemplo), você está sendo explícito no pedido de importação. Isso é essencial se você deseja substituir com confiança os estilos definidos em outro arquivo ou gravar mixins em um arquivo e usá-los em outro.
Para uma discussão mais aprofundada, consulte esta solicitação de recurso fechado aqui:
fonte
@import "/functions"
ou@import "partials/"
.Confira o projeto sass-globbing .
fonte
Eu crio um arquivo nomeado
__partials__.scss
no mesmo diretório departials
Em
__partials__.scss
, escrevi estes:Então, quando eu quiser importar o todo
partials
, basta escrever@import "partials"
. Se eu quiser importar qualquer um deles, também posso escrever@import "partials/header"
.fonte
@import 'partials/xyz'
instruções sempre que uma nova parcial é criada.forms
ewidgets
diretórios, posso@import "forms"; @import "widgets"
no arquivo CSS principal de uma página e me preocupar apenas com todas as parciais individuais (@import forms/text; @import forms/button
...) dentroforms.scss
ewidgets.scss
.Você pode usar um pouco de solução alternativa, colocando um arquivo sass na pasta que você gostaria de importar e importar todos os arquivos desse arquivo, assim:
caminho do arquivo: main / current / _current.scss
@import "placeholders"; @import "colors";
e no próximo arquivo de nível de diretório, você apenas usa import para arquivo, o que importou todos os arquivos desse diretório:
caminho do arquivo: main / main.scss
@import "EricMeyerResetCSSv20"; @import "clearfix"; @import "current";
Dessa forma, você tem o mesmo número de arquivos, como se estivesse importando o diretório inteiro. Cuidado com a ordem, o arquivo que vier por último substituirá os stiles correspondentes.
fonte
Você pode querer manter a ordem de origem e usá-la.
Eu prefiro isso.
fonte
http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#import
não parece.
Se um desses arquivos sempre exigir os outros, importe-os e apenas os de nível superior. Se todos forem independentes, acho que você terá que continuar fazendo o que está fazendo agora.
fonte
A resposta aceita por Dennis Best afirma que "Caso contrário, a ordem de carregamento é e deve ser irrelevante ... se estivermos fazendo as coisas corretamente". Isto é simplesmente incorreto. Se você estiver fazendo as coisas corretamente, use a ordem css para ajudá-lo a reduzir a especificidade e a mantê-lo simples e limpo.
O que faço para organizar as importações é adicionar um
_all.scss
arquivo em um diretório, onde importo todos os arquivos relevantes nele, na ordem correta. Dessa forma, meu principal arquivo de importação será simples e limpo, assim:Você também pode fazer isso para subdiretórios, se precisar, mas não acho que a estrutura dos seus arquivos CSS seja muito profunda.
Embora eu use essa abordagem, ainda acho que uma importação global deveria existir no sass, para situações em que a ordem não importa, como um diretório de mixins ou até animações.
fonte
Também procuro uma resposta para sua pergunta. Corresponda às respostas a importação correta de todas as funções não existe.
É por isso que escrevi um script python que você precisa colocar na raiz da sua pasta scss da seguinte maneira:
Ele irá percorrer a árvore e encontrar todos os arquivos scss. Uma vez executado, ele criará um arquivo scss chamado main.scss
um exemplo de um arquivo de saída:
fonte
isso funcionou bem pra mim
fonte
Você pode gerar um arquivo SASS que importa tudo automaticamente, eu uso esta tarefa Gulp:
Você também pode controlar a ordem de importação ordenando as pastas da seguinte maneira:
fonte
Pode ser uma pergunta antiga, mas ainda relevante em 2020, para que eu possa postar alguma atualização. Desde a atualização do Octobers'19, geralmente devemos usar @use em vez de @import , mas isso é apenas uma observação. A solução para esta pergunta é usar arquivos de índice para simplificar a inclusão de pastas inteiras. Exemplo abaixo.
https://sass-lang.com/documentation/at-rules/use#index-files
fonte
@forward
no seu _index.scss em vez de@use
Com a definição do arquivo a ser importado, é possível usar todas as definições comuns de pastas.
Assim,
@import "style/*"
irá compilar todos os arquivos na pasta style.Mais sobre o recurso de importação no Sass, você pode encontrar aqui .
fonte