選択された回答は実行可能なソリューションを提供しません。
OPの慣習は不規則に見えます。共有/共通ファイルは通常partials
、標準のボイラープレートディレクトリの下にあります。次にpartials
、コード内の任意の場所でパーシャルを解決するために、設定インポートパスにディレクトリを追加する必要があります。
この問題に初めて遭遇したとき、SASSはおそらくNodeのようなグローバル変数を提供__dirname
し、現在の作業ディレクトリ(cwd
)への絶対パスを保持していると考えました。残念ながら、そうではありません。その理由は、@import
ディレクティブの補間が不可能であるため、動的インポートパスを実行できないためです。
SASSドキュメントによると。
:load_paths
Sassの設定で設定する必要があります。OPはコンパスを使用しているので、ここのドキュメントに従ってそれに従います。
目的どおりにCLIソリューションを使用できますが、なぜですか?に追加する方がはるかに便利config.rb
です。オーバーライドするためにCLIを使用することは理にかなっていますconfig.rb
(たとえば、異なるビルドシナリオ)。
したがって、あなたconfig.rb
がプロジェクトルートの下にいると仮定して、次の行を追加してください:
add_import_path 'sub_directory_a'
そして今、@import 'common';
どこでも問題なく動作します。
これでOPに答えますが、それ以外にもあります。
付録
CSSファイルを組み込みの方法でインポートする場合、つまり、@import
CSSがそのまま提供するバニラディレクティブではなく、CSSファイルのコンテンツとSASSを実際にマージする場合に遭遇する可能性があります。結論が出ていない別の質問があります(解決策はクロス環境では機能しません)。解決策は、この SASS拡張を使用することです。
インストールしたら、次の行をconfig:に追加require 'sass-css-importer'
し、コードのどこかに追加します。@import 'CSS:myCssFile';
これを機能させるには、拡張子を省略する必要があることに注意してください。
ただし、デフォルト以外のパスからCSSファイルをインポートしようとすると同じ問題が発生し、CSSファイルadd_import_path
は考慮されません。したがって、それを解決するには、構成にさらに別の行を追加する必要があります。
add_import_path Sass::CssImporter::Importer.new('sub_directory_a')
これですべてがうまくいきます。
PS、私はsass-css-importer
ドキュメントCSS:
が.css
拡張子を省略することに加えてプレフィックスが必要であることを示していることに気づきました。関係なく動作することがわかりました。誰かが問題を起こしましたが、これまでのところ未解決のままでした。
-I
ますか?そのパス名が変更されると、多くの検索と置換が行われます。.scssを共有する人と同じローカルフォルダ構造が必要