La réponse choisie n'offre pas de solution viable.
La pratique d'OP semble irrégulière. Un fichier partagé / commun vit normalement sous partials
, un répertoire standard standard. Vous devez ensuite ajouter un partials
répertoire à vos chemins d'importation de configuration afin de résoudre les partiels n'importe où dans votre code.
Lorsque j'ai rencontré ce problème pour la première fois, j'ai pensé que SASS vous donnait probablement une variable globale similaire à celle de Node __dirname
, qui conserve un chemin absolu vers le répertoire de travail actuel ( cwd
). Malheureusement, ce n'est pas le cas et la raison en est que l'interpolation sur une @import
directive n'est pas possible, vous ne pouvez donc pas faire de chemin d'importation dynamique.
Selon les documents SASS .
Vous devez définir :load_paths
dans votre configuration Sass. Puisque OP utilise Compass, je vais suivre cela conformément à la documentation ici .
Vous pouvez utiliser la solution CLI comme prévu, mais pourquoi? il est beaucoup plus pratique de l'ajouter config.rb
. Il serait logique d'utiliser CLI pour le remplacement config.rb
(par exemple, différents scénarios de construction).
Donc, en supposant que vous soyez config.rb
sous la racine du projet, ajoutez simplement la ligne suivante:
add_import_path 'sub_directory_a'
Et maintenant @import 'common';
fonctionnera très bien n'importe où.
Bien que cela réponde OP, il y a plus.
appendice
Vous êtes susceptible de rencontrer des cas où vous souhaitez importer un fichier CSS de manière intégrée, c'est-à-dire non via la @import
directive vanilla fournie par CSS, mais par une fusion réelle d'un contenu de fichier CSS avec votre SASS. Il y a une autre question à laquelle on ne répond pas de manière concluante (la solution ne fonctionne pas entre environnements). La solution est alors d'utiliser cette extension SASS.
Une fois installé, ajoutez la ligne suivante à votre config: require 'sass-css-importer'
puis, quelque part dans votre code:@import 'CSS:myCssFile';
Notez que l'extension doit être omise pour que cela fonctionne.
Cependant, nous rencontrerons le même problème en essayant d'importer un fichier CSS à partir d'un chemin non par défaut et add_import_path
ne respectant pas les fichiers CSS. Donc, pour résoudre cela, vous devez ajouter une autre ligne dans votre configuration, qui est naturellement similaire:
add_import_path Sass::CssImporter::Importer.new('sub_directory_a')
Maintenant, tout fonctionnera bien.
PS, j'ai remarqué que la sass-css-importer
documentation indique qu'un CSS:
préfixe est requis en plus d'omettre l' .css
extension. J'ai découvert que cela fonctionne malgré tout. Quelqu'un a lancé un problème , qui est resté sans réponse jusqu'à présent.
-I
? Si ce chemin change, il y aura beaucoup de recherches et de remplacements; et il nécessite la même structure de dossiers locaux que toute personne partageant le .scss