Grunt LiveReload真的很慢

时间:2014-01-20 20:16:00

标签: css sass gruntjs

这可能是我的低效设置的影响,而不是grunt / livereload的问题。

这是我的grunfile.js中的手表测试:

watch: {
    images: {
        files: ['images/**/*.{png,jpg,gif}', 'images/*.{png,jpg,gif}'],
        tasks: ['imagemin'],
        options: {
            spawn: false
        }
    },
    js: {
        files: ['js/*.js','js/**/*.js'],
        tasks: ['jshint'],
        options: {
            spawn: false
        }
    },
    svgs: {
        files: ['images/*.svg','images/**/*.svg'],
        task: ['svgmin'],
        options: {
            span: false
        }
    },
    scss: {
        files: ['sass/*.scss', 'sass/**/*.scss'],
        tasks: ['sass','autoprefixer'],
        sourceComments: 'normal',
        options: {
            nospawn: true,
            livereload: true
        }
    }
},

这将重新编译我的SASS并重新加载页面,但是完成CSS编译需要5-6秒,然后它会进行整页刷新,而不是仅重新加载已更改的CSS文件。

所以我的问题是:

  1. 如何避免花费这么长时间来编译SASS并刷新页面,或者我只是挑剔,这是grunt的继承部分?

  2. 如何重新加载整个页面,并重新加载从我的SASS编译中更改的CSS文件?

3 个答案:

答案 0 :(得分:6)

检查我的其他答案:Fastest way to compile SCSS (Compass) + refresh the browser?

grunt-contrib-sass使用Ruby sass非常慢,它与grunt本身无关。

使用grunt-sass代替,它使用libsass,它是sass的快速c实现。

阅读这篇文章: http://benfrain.com/lightning-fast-sass-compiling-with-libsass-node-sass-and-grunt-sass/

答案 1 :(得分:1)

最好的解决方案是从grunt-contrib-sass转移到grunt-sass,但是如果你没有太多时间来解决这个问题,我想,你应该将你的'autoprefixer'任务从watch部分移到deploy部分

scss: {
    files: ['sass/*.scss', 'sass/**/*.scss'],
    tasks: ['sass',
    sourceComments: 'normal',
    options: {
        nospawn: true,
        livereload: true
    }
}

在我的项目中,这个技巧对我有帮助,因为'autoprefixer'任务工作非常缓慢

答案 2 :(得分:0)

或者您可以使用实时重新加载器工具,如fast-live-reload,与ruby sass编译器结合使用。

请注意,他们提供自己的观察者,非常快(例如罗盘运行:compass watch)。

免责声明:我是快速重新加载的创建者。