【问题标题】:Grunt with livereload, to slow用 livereload 咕哝,减慢
【发布时间】:2013-12-06 13:41:02
【问题描述】:

这是我的Gruntfile.js

watch: {
            options: { livereload: true },
            compass: {
                files: ['assets/sass/*.{scss,sass}'],
                tasks: ['compass']
            },
            // js: {
            //  files: '<%= jshint.all %>',
            //  tasks: ['jshint', 'uglify']
            // },
            livereload: {
                // files: ['*.html', '*.php', 'assets/stylesheets/**/*.{css}']
                files: ['*.html', '*.php', 'assets/stylesheets/custom.css']
            }
        },

        // compass and scss
        compass: {
            dist: {
                options: {
                config: 'config.rb',
                force: true
                }
            }
        },

这是grunt watch的输出:

Done, without errors.
... Reload assets/sass/custom.scss ...
... Reload assets/stylesheets/custom.css ...
Completed in 11.033s at Fri Dec 06 2013 14:20:48 GMT+0100 (CET) - Waiting...
OK
>> File "assets/stylesheets/custom.css" changed.
>> File "assets/sass/custom.scss" changed.

Running "compass:dist" (compass) task
overwrite assets/stylesheets/custom.css (0.701s)
identical assets/stylesheets/app.css (3.452s)
Compilation took 4.158s

Done, without errors.
... Reload assets/sass/custom.scss ...
... Reload assets/stylesheets/custom.css ...
Completed in 10.719s at Fri Dec 06 2013 14:21:53 GMT+0100 (CET) - Waiting...

  1. ..so,为什么 livereload 需要这么多时间来刷新页面, 10 秒预览我的 .scss 文件中的任何更改,以及它会如何 可能不完全刷新页面,但只注入 .css 更改 在页面中?
  2. ..我想知道的另一件事是如何避免这种情况 app.css 上的编译延迟,几乎花了 4 秒,但不是 甚至改变了?

我正在使用带有此配置的 livereload 浏览器扩展。

谢谢。

【问题讨论】:

  • 我也注意到了性能问题,所以我很好奇这里的任何解决方案。

标签: performance gruntjs livereload


【解决方案1】:

1a:要加快监视任务的速度,请尝试选项 spawn:false。这可能会使事情变得不稳定,但值得一试。如果看起来没问题,那就去吧。但是,如果您将许多不同的任务添加到监视任务中,它可能会在以后给您带来问题。但是你可以担心它并可能禁用它。

1b:

首先不要为指南针任务启用 livereload on。 (您在全局范围内拥有它,仅在 css 中使用)因此,它也会触发 scss 文件的 livereload 事件。但是由于 livereload 客户端不知道这个文件,所以它会重新加载整个页面。确保唯一报告的文件是编译后的 css。

其次,watch 任务也会为之前更改的文件触发 livereload。这是一个已知的,但我相信它已在 master 中修复,但尚未发布。

https://github.com/gruntjs/grunt-contrib-watch/issues/205

2:

它必须编译它来比较它,然后它只是报告它是相同的。

【讨论】:

    【解决方案2】:

    仅注入 .css 更改:

        watch: {
            compass: {
                files: ['assets/sass/*.{scss,sass}'],
                tasks: ['compass']
            },
            livereload: {
                files: ['assets/stylesheets/*.css'],
                options: { livereload: true }
            }
        }
    

    不幸的是,我的编译时间也很慢且类似(它必须是指南针)。

    【讨论】:

    • 我现在正在使用 Guard - Livereload 组合来完成相同的任务,因为它的工作速度要快得多,直到有人用 Grunt 找到更好的解决方案。谢谢大家。
    猜你喜欢
    • 1970-01-01
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 2016-05-22
    相关资源
    最近更新 更多