#css #ruby #sass #watch
#css #ruby #sass #Смотреть
Вопрос:
Sass обновляет мою основную таблицу стилей build.css
, когда я сохраняю изменения build.scss
, но не будет обновляться build.css
, например, при сохранении изменений в любых частичных _grid-settings.scss
файлах . По сути, мне приходится вручную повторно сохранять build.scss
каждый раз, когда я вношу частичное изменение, чтобы Sass обнаружил изменение.
С моего терминала:
Justins-MacBook-Air:ageneralist justinbrown$ sass --watch stylesheets:stylesheets
>>> Sass is watching for changes. Press Ctrl-C to stop.
write stylesheets/build.css
[Listen warning]:
Listen will be polling for changes. Learn more at https://github.com/guard/listen#polling-fallback.
Мой каталог:
stylesheets/
├── base
│ └── _base.scss
├── build.css
├── build.scss
├── layout
│ └── _layout.scss
└── vendor
├── _grid-settings.scss
├── bourbon
├── highlight
└── neat
Я использую:
- Sass 3.3.8.
- Ruby 2.0.0-p353
- OSX 10.9
Я просмотрел несколько сообщений SO о проблемах, sass --watch
но ни один из них пока не помог мне найти решение.
РЕДАКТИРОВАТЬ: я добавляю свой build.scss
здесь на всякий случай, если это проблема:
@import "vendor/bourbon/bourbon";
@import "vendor/grid-settings";
@import "vendor/neat/neat";
@import "base/base";
@import "layout/layout";
Комментарии:
1. Мб это будет работать с абсолютным путем импорта?
2. @JAre пробовал это, но я получаю тот же результат.
3. Возможно ли, что sass не отслеживает все подкаталоги внизу
stylesheets
?4. вы можете протестировать его, добавив неполный файл scss.
5. @JAre попробовал это, добавив
vendor/test.scss
, но все равно безуспешно.sass --watch
обрабатывает оба неполных файла scss при запуске, но не обновляет test.css при последующих сохранениях.
Ответ №1:
У меня была такая же проблема.
Мне удалось исправить это, удалив каталог кэша SASS. Я также побежал sudo gem update
обновлять все драгоценные камни в моей системе.
Я не уверен, какая из этих вещей исправила это, или это была комбинация двух.
Комментарии:
1. Прошло некоторое время, но я думаю, что если бы я сделал либо the
gem update
, либоgem install listen
предложенное @EoghanM ниже, это, вероятно, помогло бы.2. Где находится кэш SASS?
3. Он находится в скрытой папке с именем «.sass-cache» в корне того места, где вы компилируете свои файлы SASS.
Ответ №2:
Я также придерживался проблемы, связанной с тем, что Sass, казалось, неправильно отслеживал все изменения файлов.
Sass не может отслеживать изменения в файлах, которые расположены по пути, ведущему вверх по файлу просмотра. Например:
Вариант A (который у меня был)
scss/
├── base
│ └── controller1.scss
├── utils
│ └── utils.scss
└── app
└── app.scss
Где app.scss:
@import '../base/container1'
@import '../utils/utils'
компиляция
sass —watch приложение/app.scss:../css/styles.css
sass —приложение для просмотра: ../css
В обоих случаях sass отслеживает только изменения файла app.scss, но не controller1.scss или utils.scss
Вариант B (решение)
scss/
├── base
│ └── controller1.scss
├── utils
│ └── utils.scss
└── app.scss
Где app.scss:
@import 'base/container1'
@import 'utils/utils'
компиляция
sass —watch app.scss:../css/styles.css
Вариант C (решение) также работает
scss/
├── base
│ └── controller1.scss
├── utils
│ └── utils.scss
└── app.scss
Где app.scss:
@import 'base/container1'
и controller1.scss:
@import '../utils/utils'
// ...
Комментарии:
1. Столкнувшись с той же проблемой в 2020 году с dart sass. Кажется правильным, что он не просматривает пути к файлам, которые требуют перехода выше папки, в которой находится просматриваемый файл. Спасибо!
2. недооцененный ответ. я столкнулся с той же проблемой, когда я импортировал файлы scss над текущим каталогом. В этом случае флаг —watch, похоже, не работает.
Ответ №3:
Для меня это неудовлетворительный ответ, но в итоге я попробовал другой gem, который обрабатывал бы предварительную обработку, guard-livereload
, и, хотя сам он не работал, когда я вернулся, чтобы попробовать sass --watch
, sass правильно отслеживал мой каталог таблиц стилей на предмет изменений (включая частичные части) и впоследствии перекомпилировал build.scss
.
Я не уверен, почему это работает сейчас, но предполагаю, что один из драгоценных камней, установленных вместе с guard или guard-livereload, решил проблему. Возможно listen
, или fssm
?
Комментарии:
1. Предупреждение «прослушивание будет опрашивать изменения» исчезло для меня, когда я это сделал
sudo gem install listen
. Не уверен, что это то, что устранило для вас общую проблему.2. @EoghanM это, похоже, соответствует тому, что я видел.
Ответ №4:
interface FileImporter {
findFileUrl(
url: string,
options: {fromImport: boolean}
): FileImporterResult | null;
}
Комментарии:
1. Добро пожаловать в StackOverflow. Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, как и / или почему он решает проблему, улучшит долгосрочную ценность ответа.