La réponse choisie ne propose pas de solution viable.
La pratique de l'OP semble irrégulière. Un fichier partagé/commun se trouve normalement sous partials
un répertoire standard pour le modèle de base. Vous devez ensuite ajouter partials
à 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 un @import
n'est pas possible, donc vous ne pouvez pas faire un chemin d'importation dynamique.
Según Documentation SASS .
Vous devez définir :load_paths
dans votre configuration Sass. Puisque l'OP utilise Compass, je vais le suivre en accord avec la documentation. aquí .
Vous pouvez opter pour la solution CLI telle qu'elle est prévue, mais pourquoi ? Il est bien plus pratique de l'ajouter à config.rb
. Il serait logique d'utiliser le CLI pour remplacer config.rb
(par exemple, différents scénarios de construction).
Donc, en supposant que votre config.rb
est sous le projet Root, il suffit d'ajouter la ligne suivante : add_import_path 'sub_directory_a'
Et maintenant @import 'common';
fonctionnera très bien partout.
Bien que cela réponde à l'OP, il y a plus.
Annexe
Il est probable que vous rencontriez des cas où vous souhaitez importer un fichier CSS de manière intégrée, c'est-à-dire sans passer par l'intermédiaire de l'application vanilla @import
que CSS fournit d'emblée, mais une directive réel fusion du contenu d'un fichier CSS avec votre SASS. Il existe un autre question La réponse à cette question n'est pas concluante (la solution ne fonctionne pas dans tous les environnements). La solution consiste donc à utiliser ce Extension SASS.
Une fois installé, ajoutez la ligne suivante à votre configuration : require 'sass-css-importer'
et ensuite, 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 lorsque nous essaierons d'importer un fichier CSS à partir d'un chemin d'accès autre que celui par défaut et add_import_path
ne respecte pas les fichiers CSS. Pour résoudre ce problème, vous devez donc ajouter une autre ligne dans votre configuration, qui est naturellement similaire :
add_import_path Sass::CssImporter::Importer.new('sub_directory_a')
Maintenant, tout va bien fonctionner.
P.S., J'ai remarqué sass-css-importer
La documentation indique un CSS:
est requis en plus de l'omission du préfixe .css
extension. J'ai découvert qu'elle fonctionne malgré tout. Quelqu'un a lancé un numéro qui sont restées sans réponse jusqu'à présent.