我如何在grunt-contrib-sass中编写一些任务?

时间:2015-07-28 08:09:16

标签: sass gruntjs grunt-contrib-sass

我的gruntfile.js中有一些这样的东西:

        sass: {
            app: {
                files: {
                 '<%= meta.cssDist %>style.css': '<%= meta.cssSrc %>style.scss'
                }
            },
            options: {
                style: 'nested'
            }
    },
grunt.registerTask('default', ['sass']);

但这只是一项任务。我如何组合两个或更多任务? 正如我在一些grunt模块中所知道的那样,你可以结合多个这样的任务:

            sass: {
              dev: {
                 app: {
                    files: {
                      '<%= meta.cssDist %>style.css': '<%= meta.cssSrc %>style.scss'
                    }
                 },
                 options: {
                    style: 'nested'
                 }
              },

              production: {
                 app: {
                    files: {
                      '<%= meta.cssDist %>style.css': '<%= meta.cssSrc %>style.scss'
                    }
                 },
                 options: {
                    style: 'compressed',
                    sourcemap: 'none'
                 }
              }
    },
    // and then register tasks
    grunt.registerTask('dev', ['sass:dev']);
    grunt.registerTask('prod', ['sass:production']);

但这不起作用,GruntJs没有表现出错误,也没有编译sass。这有什么问题?

2 个答案:

答案 0 :(得分:0)

有一个肮脏的黑客,但它至少对我有用。但起初我建议迁移到Gulp,在这里简单的任务是和平的蛋糕。因此,在排序中,您将在initConfig函数中为sass创建默认配置,然后我将使用回调函数注册任务,其中所有魔法都会发生。在那里你将覆盖默认设置,最后你可以运行grunt sassTask或任何名称。

grunt.registerTask("sassTask", function() {
    grunt.config.data.sass = {
        dist: {
            files: {
                'test.css': 'test.scss'
            }
        }
    };
    grunt.task.run('sass');
});

答案 1 :(得分:0)

我发现了我的错误,它将以这种方式运行这些任务:

sass: {
dev: {
    files: {
        '<%= meta.cssDist %>style.css': '<%= meta.cssSrc %>style.scss'
    },
    options: {
        style: 'nested'
    }
},
production: {
    files: {
        '<%= meta.cssDist %>style.css': '<%= meta.cssSrc %>style.scss'
    }
    options: {
        style: 'compressed',
        sourcemap: 'none'
    }
}
}
grunt.registerTask('dev', ['sass:dev']);
grunt.registerTask('prod', ['sass:production']);