基于How to configure sourceMaps for LESS using Grunt when there is more than one file in your project? 和Compile LESS to multiple CSS files, based on variable value,您可以按如下方式创建Gruntfile.js:
module.exports = function (grunt) {
'use strict';
var TaskArray = [];
var tasks = [];
//var lessVariable = '';
var languages = ['de','en','nl'];
languages.forEach(function(language) {
tasks[language] = {options: {sourceMap:true, modifyVars:{}},files:{} };
tasks[language]['options']['sourceMapFilename'] = 'dist/' + language + '.map.css';
tasks[language]['options']['modifyVars']['is' + language.toUpperCase()]= true;
tasks[language]['files']['dist/' + language + '.css'] = 'less/project.less';
TaskArray.push('less:' + language);
});
grunt.loadNpmTasks('grunt-contrib-less');
grunt.config('less',tasks);
grunt.registerTask( 'default', TaskArray );
};
以上使用languages 数组动态创建您的任务。您的布尔变量由 grunt-contrib-less 的 modifyVars 选项更改,另请参见 http://lesscss.org/usage/#using-less-in-the-browser-modify-variables。
当您的less/project.less 包含以下代码时:
@isDE: false;
@isNL: false;
@isEN: false;
.m when (@isDE) {
language: de;
}
.m when (@isNL) {
language: nl;
}
.m when (@isEN) {
language: en;
}
.m();
运行grunt && cat dist/nl.css 应输出如下所示:
Running "less:de" (less) task
File dist/de.map.css created.
File dist/de.css created
Running "less:en" (less) task
File dist/en.map.css created.
File dist/en.css created
Running "less:nl" (less) task
File dist/nl.map.css created.
File dist/nl.css created
Done, without errors.
.m {
language: nl;
}
/*# sourceMappingURL=dist/nl.map.css */