【问题标题】:gulp, compass, live reload & partials reloads吞咽,指南针,实时重新加载和部分重新加载
【发布时间】:2014-07-11 08:45:33
【问题描述】:

所以,我在我的项目中使用 gulp。

我使用 gulp-compass 来编译我的资产。

而且,我的任务之一是开发人员的监视任务。像这样:

gulp.task('live', function() {
  gulp.watch('path/to/my/scss/files', function(event) {
    console.log('Event type: ' + event.type);
    console.log('Event path: ' + event.path);
    compass(event.path);
  });
});

指南针功能:

function compass(source) {
  return gulp.src(source)
    .pipe(
      plugins.compass({
        config_file: 'config.rb',
        css: 'path/to/my/css/files',
        sass: 'path/to/my/scss/files'
      }).on('error', errorHandler)
    )
    .pipe(gulp.dest('../web/css'))
    .pipe(plugins.livereload());
}

注意:errorHandler 函数与我的问题无关。

我以这种方式查看文件的原因是为了让 gulp-compass 不编译所有文件,而是编译已更改的文件(我将它用于开发,所以我将在一个文件中工作),这个刷新的方式很快,我不必等待(通常,编译所有 scss 大约需要 30 ~ 60 秒)。 gulp-compass 只执行编译,不监视。

当我处理非部分文件(即:home.scss)时,这非常有效。

但是,如果我更改部分内容,包含在主 scss 中,事情就会出错:它会编译我的部分内容,也就是说,它不会刷新(我猜它尝试刷新部分内容,不感觉)。

为了实现这一点,我必须对父 scss 文件进行虚拟修改,并且它可以工作。

我知道这是由于我定义任务的方式(当时只发送到罗盘一个文件),也由于 gulp-compass 执行总是“编译”。

这个 gulp-plugin(到目前为止)没有 watch 命令(除非我修补它,而且我不想这样做)。

是否有人知道如何解决这种情况,当我更改部分内容时,“他知道”这个部分属于某个父级然后刷新它?

到目前为止,我可以对父级进行虚拟修改,或者明确地观看我正在处理的父级 scss,但我很想拥有这个自动的。

我认为一种解决方案可以是创建一个包含部分的所有父级的地图(直接读取文件),如果部分被修改,更新所有父级并刷新,但也许那“太贵了”。也许这可能是某种“热身”...

有人有同样的问题吗?您如何使用 partials 和 watch / live-reload 环境?

所有这些的目标是编写代码并更新我的浏览器,这样我就可以实时看到我的进步并防止跨浏览器问题(很少有浏览器同时打开并动态刷新)。

任何建议/帮助将不胜感激!

【问题讨论】:

  • 我不确定你是否没有过度优化,但也许这个插件会引导你找到一些解决方案:npmjs.org/package/gulp-tap我想你可以分析内容,缓存它,然后通过检查过滤文件你的地图。由于我使用 watch+livereload 的方式,您可以查看我之前项目的要点:gist.github.com/Namek/a81c1bcc2a73183d0c5f

标签: javascript gulp compass-sass gulp-watch


【解决方案1】:

我无法解决这个问题。

我们放弃了指南针,因为我们不再需要它了。

我们现在使用的是 node-sass,有时是 bootstrap,有时是 post css,等等……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 2014-01-17
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多