Sass - 手表不重新编译

时间:2014-06-13 10:35:15

标签: css ruby sass watch

当我将更改保存到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 3.3.8。
  • Ruby 2.0.0-p353
  • OSX 10.9

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

编辑:我在这里添加build.scss以防以下问题:

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

3 个答案:

答案 0 :(得分:4)

我遇到了同样的问题。

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

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

答案 1 :(得分:0)

对我来说,这不是一个令人满意的答案,但我最终尝试了另一个处理预处理的宝石guard-livereload,虽然它本身没有用,但当我回来试试时sass --watch已正确监控我的样式表目录中的更改(包含部分内容),然后重新编译build.scss

我不确定为什么它现在可以正常工作,但我猜测其中一个与guard或guard-livereload一起安装的宝石解决了这个问题。可能是listenfssm

答案 2 :(得分:0)

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