当我保存对build.css
的更改时Sass更新我的主样式表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 --watch
问题的SO帖子,但没有人帮我指导解决方案。
编辑:我在这里添加我的build.scss
以防万一是这个问题:
@import "vendor/bourbon/bourbon";
@import "vendor/grid-settings";
@import "vendor/neat/neat";
@import "base/base";
@import "layout/layout";
我遇到过同样的问题。
我设法通过删除SASS缓存目录来修复它。我还运行了sudo gem update
来更新我系统上的所有宝石。
我不确定这些东西中的哪一个是固定的,或者它是两者的组合。
这对我来说不是一个令人满意的答案,但我最终尝试了另一个处理预处理的宝石,guard-livereload
,虽然它本身不起作用,当我回来尝试sass --watch
sass正确监视我的样式表目录的变化时(包括部分)并随后重新编译build.scss
。
我不确定为什么它现在有效,但我猜测安装的一个宝石以及guard-guardreload解决了这个问题。也许listen
或fssm
?
我也坚持Sass似乎没有正确观察所有文件更改的问题。
Sass无法观察通过向上指向观看文件的路径所定位的文件的更改。例如:
变体A(我有)
scss/
├── base
│ └── controller1.scss
├── utils
│ └── utils.scss
└── app
└── app.scss
app.scss在哪里:
@import '../base/container1'
@import '../utils/utils'
编译
sass --watch app / app.scss:../ css / styles.css
sass --watch app:../ 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'
// ...