A resposta selecionada não oferece uma solução viável.
A prática de OP parece irregular. Um arquivo compartilhado / comum normalmente reside em partials
um diretório clichê padrão. Você deve então adicionar o partials
diretório aos seus caminhos de importação de configuração para resolver parciais em qualquer lugar do seu código.
Quando encontrei esse problema pela primeira vez, percebi que o SASS provavelmente fornece uma variável global semelhante à do Node __dirname
, que mantém um caminho absoluto para o diretório de trabalho atual ( cwd
). Infelizmente, isso não acontece e o motivo é porque a interpolação em um@import
diretiva não é possível, portanto, você não pode fazer um caminho de importação dinâmico.
De acordo com os documentos SASS .
Você precisa definir :load_paths
em sua configuração Sass. Como o OP usa o Compass, seguirei de acordo com a documentação aqui .
Você pode escolher a solução CLI conforme o propósito, mas por quê? é muito mais conveniente adicioná-lo config.rb
. Faria sentido usar CLI para substituirconfig.rb
(por exemplo, diferentes cenários de construção).
Portanto, supondo que você config.rb
esteja na raiz do projeto, basta adicionar a seguinte linha:
add_import_path 'sub_directory_a'
E agora @import 'common';
vai funcionar bem em qualquer lugar.
Embora isso responda a OP, há mais.
Apêndice
É provável que você encontre casos em que deseja importar um arquivo CSS de uma maneira incorporada, ou seja, não por meio da @import
diretiva básica que o CSS fornece fora da caixa, mas uma mesclagem real do conteúdo de um arquivo CSS com o seu SASS. Há outra pergunta , que foi respondida de forma inconclusiva (a solução não funciona em ambientes diferentes). A solução, então, é usar esta extensão SASS.
Depois de instalado, adicione a seguinte linha à sua configuração: require 'sass-css-importer'
e, a seguir, em algum lugar do seu código:@import 'CSS:myCssFile';
Observe que a extensão deve ser omitida para que isso funcione.
No entanto, teremos o mesmo problema ao tentar importar um arquivo CSS de um caminho não padrão e add_import_path
não respeitar os arquivos CSS. Então, para resolver isso, você precisa adicionar mais uma linha em sua configuração, que é naturalmente semelhante:
add_import_path Sass::CssImporter::Importer.new('sub_directory_a')
Agora tudo funcionará bem.
PS, notei que a sass-css-importer
documentação indica que um CSS:
prefixo é necessário, além de omitir a .css
extensão. Eu descobri que funciona de qualquer maneira. Alguém iniciou um problema , que permaneceu sem resposta até agora.
-I
? Se o nome do caminho mudar, haverá muitas pesquisas e substituições; e requer a mesma estrutura de pasta local de qualquer pessoa que compartilhe o .scss