Wybrana odpowiedź nie jest realnym rozwiązaniem.
Praktyka OP wydaje się nieregularna. Plik współdzielony / wspólny zwykle partials
znajduje się w standardowym katalogu standardowym. Następnie należy dodać partials
katalog do ścieżek importu konfiguracji, aby rozwiązać częściowe w dowolnym miejscu w kodzie.
Kiedy napotkałem ten problem po raz pierwszy, pomyślałem, że SASS prawdopodobnie daje ci zmienną globalną podobną do zmiennej Node __dirname
, która zachowuje bezwzględną ścieżkę do bieżącego katalogu roboczego ( cwd
). Niestety tak się nie dzieje, a powodem jest to, że interpolacja @import
dyrektywy nie jest możliwa, dlatego nie można wykonać dynamicznej ścieżki importu.
Według docs SASS .
Musisz ustawić :load_paths
w konfiguracji Sassa. Ponieważ OP używa Compass, będę postępować zgodnie z dokumentacją tutaj .
Możesz przejść z rozwiązaniem CLI zgodnie z przeznaczeniem, ale dlaczego? o wiele wygodniej jest go dodać config.rb
. Sensowne byłoby użycie CLI do nadpisywania config.rb
(np. Różne scenariusze kompilacji).
Zakładając, że config.rb
znajdujesz się w katalogu głównym projektu, po prostu dodaj następujący wiersz:
add_import_path 'sub_directory_a'
A teraz @import 'common';
będzie działać dobrze wszędzie.
Podczas gdy to odpowiada OP, jest więcej.
dodatek
Prawdopodobnie napotkasz przypadki, w których chcesz zaimportować plik CSS w sposób osadzony, to znaczy nie za pomocą @import
dyrektywy waniliowej, którą CSS zapewnia po wyjęciu z pudełka, ale rzeczywiste połączenie zawartości pliku CSS z SASS. Jest jeszcze jedno pytanie , na które udzielono odpowiedzi niejednoznacznej (rozwiązanie nie działa w różnych środowiskach). Rozwiązaniem jest więc użycie tego rozszerzenia SASS.
Po zainstalowaniu dodaj następujący wiersz do konfiguracji: require 'sass-css-importer'
a następnie gdzieś w kodzie:@import 'CSS:myCssFile';
Zauważ, że rozszerzenie musi zostać pominięte, aby to zadziałało.
Jednak napotkamy ten sam problem podczas próby zaimportowania pliku CSS ze ścieżki innej niż domyślna i add_import_path
nie obsługuje plików CSS. Aby rozwiązać ten problem, musisz dodać kolejną linię w konfiguracji, która jest oczywiście podobna:
add_import_path Sass::CssImporter::Importer.new('sub_directory_a')
Teraz wszystko będzie ładnie działać.
PS, zauważyłem, że sass-css-importer
dokumentacja wskazuje, że CSS:
oprócz pominięcia .css
rozszerzenia wymagany jest przedrostek . Dowiedziałem się, że to działa niezależnie. Ktoś rozpoczął problem , który do tej pory pozostawał bez odpowiedzi.
-I
? Jeśli ta nazwa ścieżki ulegnie zmianie, będzie dużo wyszukiwania i zastępowania; i wymaga takiej samej struktury folderów lokalnych, jak każdy, kto udostępnia plik .scss