Как я могу написать несколько задач в grunt-contrib-sass?

У меня есть несколько таких в моем gruntfile.js:

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

Но это только одна задача. Как я могу совместить две или более задач? Как я знаю, в некоторых модулях вы можете объединить несколько задач, например:

            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 ответа

Решение

Я нахожу свою ошибку, он будет выполнять эти задачи таким образом:

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']);

Есть грязный взлом, но он работает по крайней мере для меня. Но сначала я бы предложил перебраться в Гулп, где такая простая задача - это как пирог. Таким образом, в сортировке вы создадите конфигурацию по умолчанию для sass в функции initConfig, а затем я зарегистрирую задачу с функцией обратного вызова, где происходит вся магия. Там вы переопределите настройку по умолчанию, и, наконец, вы можете запустить grunt sassTask или любое другое имя.

grunt.registerTask("sassTask", function() {
    grunt.config.data.sass = {
        dist: {
            files: {
                'test.css': 'test.scss'
            }
        }
    };
    grunt.task.run('sass');
});
Другие вопросы по тегам