Как я могу написать несколько задач в 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');
});