从grunt-contrib-sass切换到grunt-sass后,编译时间相同。两者都花费与使用Ruby时相同的时间

时间:2014-09-14 04:00:53

标签: twitter-bootstrap gruntjs grunt-contrib-sass

我听说过“快速照明”Libsass。我从Ruby切换到Grunt。但无论我使用哪种编译方法(Ruby,grunt-contrib-sass,grunt-sass),速度都是一样的。编译bootstrap-scss时为15秒。

grunt.js:

module.exports = function (grunt) {
    require('time-grunt')(grunt);

    grunt.initConfig({
        watch: {
            src: {
                files: ['public_html/sass/*.scss'],
                tasks: ['compass:dev']
            },
            options: {
                livereload: true
            }
        },
        compass: {
            dev: {
                options: {
                    config: 'config.rb'
                }
            }
        }
    });
    grunt.loadNpmTasks('grunt-contrib-compass');
    grunt.loadNpmTasks('grunt-sass');
    grunt.loadNpmTasks('grunt-contrib-watch');
};

config.rb:

# Require any additional compass plugins here.
require 'bootstrap-sass'

# Set this to the root of your project when deployed:
http_path = "/"
css_dir = "public_html/css"
sass_dir = "public_html/sass"
images_dir = "public_html/images"
javascripts_dir = "public_html/js"
fonts_dir = "public_html/fonts"

# You can select your preferred output style here (can be overridden via the command line):
# output_style = :expanded or :nested or :compact or :compressed
# output_style = :expanded
environment = :development

# To enable relative paths to assets via compass helper functions. Uncomment:
relative_assets = true

# To disable debugging comments that display the original location of your selectors. Uncomment:
# line_comments = false
line_comments = true

sourcemap = true
sass_options = {:sourcemap => true}

# If you prefer the indented syntax, you might want to regenerate this
# project again passing --syntax sass, or you can uncomment this:
# preferred_syntax = :sass
# and then run:
# sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass

1 个答案:

答案 0 :(得分:0)

使用您的配置,您仍然使用Compass来编译SCSS文件,grunt-sass任务既未配置也未运行。你没有看到编译时间的改进,因为Compass是基于Ruby的,并且仍在使用Ruby SASS预处理器。

Libsass是SASS编译器的C / C ++实现,它完全取消了Ruby。在this blog post的评论中提到Compass有很多Ruby依赖,因此在可预见的未来不会移植到Libsass。 因此,如果您非常依赖Compass mixins和函数,则必须坚持使用Ruby预处理器。

如果您可以取消使用Compass,可以使用grunt-sass进行以下配置:

module.exports = function(grunt) {
  grunt.initConfig({
    watch: {
        src: {
            files: ['public_html/sass/*.scss'],
            tasks: ['sass:dev']
        },
        options: {
            livereload: true
        }
    },
    sass: {
        options: {
            sourceMap: true,
            outputStyle: 'expanded'
        },
        dev: {
          files: [{
            expand: true,
            src: ['public_html/sass/**/*.{scss,sass}'],
            dest: 'public_html/css/'
          }]
        }
    }
  });

  grunt.loadNpmTasks('grunt-sass');
  grunt.loadNpmTasks('grunt-contrib-watch');
}

查看grunt-sass page以获取有关可用选项的更多信息。