Sass – 手表不重新编译

当我保存对build.scss更改时,Sass会更新我的主样式表build.css ,但是当我将更改保存到任何部分时,不会更新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

我已经查看了几个关于sass --watch问题的SOpost,但没有人帮我指导解决方案。

编辑:我在这里添加我的build.scss以防万一是这个问题:

 @import "vendor/bourbon/bourbon"; @import "vendor/grid-settings"; @import "vendor/neat/neat"; @import "base/base"; @import "layout/layout"; 

我遇到过同样的问题。

我设法通过删除SASS缓存目录来修复它。 我还运行了sudo gem update来更新我系统上的所有gem。

我不确定这些东西中的哪一个是固定的,或者它是两者的组合。

这对我来说不是一个令人满意的答案,但我最终尝试了另一个可以处理预处理, guard-livereload ,虽然它本身不起作用,当我回来尝试sass --watch sass正确监控我的样式表目录进行更改(包括部分),然后重新编译build.scss

我不确定为什么它现在可以工作,但我猜测安装了一个和后卫或后卫livereload的gem解决了这个问题。 也许listenfssm

我也坚持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.scssutils.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' // ...