在观看事件上的咕噜动态任务 [英] grunt dynamic task on watch event
问题描述
您好,我有一个问题,我需要为不同的目录观看较少的任务。
我需要一种方法来编辑less任务,而不是复制它们,我需要在里面使用一个变量dir。
有我的代码:
module.exports = function(grunt){
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
dirLess:'less',
dirCss:'css',
dirImages:'images',
dirDT:'theme-cdt',
dirPB:'theme-cpb',
dirMCS:'theme-cmcs',
dirSprites:'<%= dirImages%> / sprites ',
dirIconFont:'./fonts',
dirCssMin:'<%= dirCss%> / min',
less:{
devDT:{
选项:{
outputSourceFiles:true,
sourceMap:true,
sourceMapFilename:'<%= dirDT%> /<%= dirCss%> /style.css.map ',
sourceMapBasepath:'<%= dirDT%> /<%= dirCss%> /',
},
文件:{
'<%= dirDT%> /<%= dirCss%> /style.css':'<%= dirDT%> /<% = dirLess%> /style.less'
},
},
devIeDT:{
files:{
'<%= dirDT%> / <%= dirCss%> /style-ie9-bootstrap.css':'<%= dirDT%> /<%= dirLess%> /style-bootstrap.less',
'< ;%= dirDT%> /<%= dirCss%> /style-ie9-common.css':'<%= dirDT%> /<%= dirLess%> /style-common.less ',
'<%= dirDT%> /<%= dirCss%> /style-ie9-view.css':'<%= dirDT%> /<%= dirLess% > /style-view.less',
'<%= dirDT%> /<%= dirCss%> /style-ie8.css':'<%= dirDT%> / <%= dirLess%> /style-ie8.less'
},
},
devPB:{
选项:{
outputSourceFiles:tru e,
sourceMap:true,
sourceMapFilename:'<%= dirPB%> /<%= dirCss%> /style.css.map',
sourceMapBasepath:'< ;%= dirPB%> /<%= dirCss%> /',
},
files:{
'<%= dirPB%> /<%= dirCss%> /style.css':'<%= dirPB%> /<%= dirLess%> /style.less'
},
},
devIePB :{
files:{
'<%= dirPB%> /<%= dirCss%> /style-ie9-bootstrap.css':'<%= dirPB%> /<%= dirLess%> /style-bootstrap.less',
'<%= dirPB%> /<%= dirCss%> /style-ie9-common.css':' <%= dirPB%> /<%= dirLess%> /style-common.less',
'<%= dirPB%> /<%= dirCss%> / style- ie9-view.css':'<%= dirPB%> /<%= dirLess%> /style-view.less',
'<%= dirPB% > /<%= dirCss%> /style-ie8.css':'<%= dirPB%> /<%= dirLess%> /style-ie8.less'
},
},
devMCS:{
options:{
outputSourceFiles:true,
sourceMap:true,
sourceMapFilename:'<%= dirMCS%> ; /<%= dirCss%> /style.css.map',
sourceMapBasepath:'<%= dirMCS%> /<%= dirCss%> /',
} ,
档案:{
'<%= dirMCS%> /<%= dirCss%> /style.css':'<%= dirMCS%> /<%= dirLess%> /style.less'
},
},
devIeMCS:{
files:{
'<%= dirMCS%> /< ;%= dirCss%> /style-ie9-bootstrap.css':'<%= dirMCS%> /<%= dirLess%> /style-bootstrap.less',
'< %= dirMCS%> /<%= dirCss%> /style-ie9-common.css':'<% = dirMCS%> /<%= dirLess%> /style-common.less',
'<%= dirMCS%> /<%= dirCss%> / style-ie9-view .css':'<%= dirMCS%> /<%= dirLess%> /style-view.less',
'<%= dirMCS%> /<%= dirCss% > /style-ie8.css':'<%= dirMCS%> /<%= dirLess%> /style-ie8.less'
},
}
},
watch:{
devDT:{
files:['<%= dirDT%> /<%= dirLess%> / *。less','< %= dirDT%> /<%= dirLess%> / bootstrap-less / *。less','<%= dirDT%> /<%= dirLess%> / bootstrap-less / * .less',
'<%= dirDT%> /<%= dirLess%> / common / *。less','<%= dirDT%> /<%= dirLess %<%= dirDT%> /<%= dirLess%> / plugin / *。less','<%= dirDT%> /<% = dirJsAcc%> / *。js',
'<%= dirDT%> /<%= dirIconFo nt%> / _ iconfont.less','Gruntfile.js'],//'<%= dirJs%> / *。js'
tasks:['less:devDT','less:devIeDT '',//'uglify:dev','autoprefixer:all'
options:{
livereload:12344,
reload:true
},
},
devPB:{
files:['<%= dirPB%> /<%= dirLess%> / *。less','<%= dirPB%> /< %= dirLess%> / bootstrap-less / *。less','<%= dirPB%> /<%= dirLess%> / bootstrap-less / mixins / *。less',
'<%= dirPB%> /<%= dirLess%> / common / *。less','<%= dirPB%> /<%= dirLess%> / components / *。less ','<%= dirPB%> /<%= dirLess%> / plugin / *。less','<%= dirPB%> /<%= dirJsAcc%> / *。js ',
'<%= dirPB%> /<%= dirIconFont%> / _ iconfont.less','Gruntfile.js'],//'<%= dirJs%> / * .js'
任务:['less:devPB','less:devIePB'],//'uglify:dev','autoprefixer:all'
options:{
livereload:12346,
reload :true
},
},
devMCS:{
files:['<%= dirMCS%> /<%= dirLess%> / *。less ','<%= dirMCS%> /<%= dirLess%> / bootstrap-less / *。less','<%= dirMCS%> /<%= dirLess%> / bootstrap -less / mixins / *。less',
'<%= dirMCS%> /<%= dirLess%> / common / *。less','<%= dirMCS%> / <%= dirLess%> / components / *。less','<%= dirMCS%> /<%= dirLess%> / plugin / *。less','<%= dirMCS%> ; /<%= dirJsAcc%> / *。js',
'<%= dirMCS%> /<%= dirIconFont%> / _ iconfont.less','Gruntfile.js'] ,//'<%= dirJs%> / *。js'
tasks:['less:devMCS','less:devIeMCS'],//'uglif y:dev','autoprefixer:all'
options:{
livereload:12347,
reload:true
},
}
},
并发:{
全部:{
任务:['watch:devDT','watch:devPB','watch:devMCS'],
options:{
logConcurrentOutput:true
}
}
}
});
grunt.loadNpmTasks('grunt-contrib-less');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-concurrent');
grunt.registerTask('default',['less:devMCS','less:devIeMCS','less:devPB','less:devIePB','less:devDT','less: devIeDT']);
grunt.registerTask('conc',['concurrent:all'])
// grunt.registerTask('mcs',['watch:devMCS']);
// grunt.registerTask('pb',['watch:devPB']);
// grunt.registerTask('dt',['watch:devDT']);
};
我需要在一个通用版中压缩所有相同的较少任务,可以少用一个:开发人员将目录传递给任务。
我在互联网上搜索时,唯一发现的是在任务调用中使用全局变量,但是当此事件嵌套在其他事件中,这个变量在嵌套事件中丢失(例如,watch任务需要变量,但是这个watch任务内部运行的任务会丢失并且没有设置)。
thanks
使用传递给您的任务的参数来快速完成自定义任务。例如:
手表:{
服务:{
文件:['src / ** / *。*'],
tasks:['<%= grunt.task.current.args [1]%>']
}
}
然后,您可以将值( myARG
在这种情况下)传递给任务:
grunt.registerTask('serve',['build','watch:service:myARG']);
这使得任务相当于
watch:{
service:{
files:['src /**/*.*'],
tasks:['myARG']
$ b你可以用多个冒号传递多个值:
如果你需要的话。Hi i have a problem i need to watch less tasks for different directory. I need a method to edit the less task and instead to duplicate them i need to use a variable dir inside it.
there is my code:
module.exports = function(grunt) { grunt.initConfig({ pkg : grunt.file.readJSON('package.json'), dirLess : 'less', dirCss : 'css', dirImages : 'images', dirDT : 'theme-cdt', dirPB : 'theme-cpb', dirMCS : 'theme-cmcs', dirSprites : '<%= dirImages %>/sprites', dirIconFont : './fonts', dirCssMin : '<%= dirCss %>/min', less : { devDT : { options : { outputSourceFiles: true, sourceMap : true, sourceMapFilename : '<%= dirDT %>/<%= dirCss %>/style.css.map', sourceMapBasepath : '<%= dirDT %>/<%= dirCss %>/', }, files : { '<%= dirDT %>/<%= dirCss %>/style.css' : '<%= dirDT %>/<%= dirLess %>/style.less' }, }, devIeDT : { files : { '<%= dirDT %>/<%= dirCss %>/style-ie9-bootstrap.css': '<%= dirDT %>/<%= dirLess %>/style-bootstrap.less', '<%= dirDT %>/<%= dirCss %>/style-ie9-common.css': '<%= dirDT %>/<%= dirLess %>/style-common.less', '<%= dirDT %>/<%= dirCss %>/style-ie9-view.css': '<%= dirDT %>/<%= dirLess %>/style-view.less', '<%= dirDT %>/<%= dirCss %>/style-ie8.css': '<%= dirDT %>/<%= dirLess %>/style-ie8.less' }, }, devPB : { options : { outputSourceFiles: true, sourceMap : true, sourceMapFilename : '<%= dirPB %>/<%= dirCss %>/style.css.map', sourceMapBasepath : '<%= dirPB %>/<%= dirCss %>/', }, files : { '<%= dirPB %>/<%= dirCss %>/style.css' : '<%= dirPB %>/<%= dirLess %>/style.less' }, }, devIePB : { files : { '<%= dirPB %>/<%= dirCss %>/style-ie9-bootstrap.css': '<%= dirPB %>/<%= dirLess %>/style-bootstrap.less', '<%= dirPB %>/<%= dirCss %>/style-ie9-common.css': '<%= dirPB %>/<%= dirLess %>/style-common.less', '<%= dirPB %>/<%= dirCss %>/style-ie9-view.css': '<%= dirPB %>/<%= dirLess %>/style-view.less', '<%= dirPB %>/<%= dirCss %>/style-ie8.css': '<%= dirPB %>/<%= dirLess %>/style-ie8.less' }, }, devMCS : { options : { outputSourceFiles: true, sourceMap : true, sourceMapFilename : '<%= dirMCS %>/<%= dirCss %>/style.css.map', sourceMapBasepath : '<%= dirMCS %>/<%= dirCss %>/', }, files : { '<%= dirMCS %>/<%= dirCss %>/style.css' : '<%= dirMCS %>/<%= dirLess %>/style.less' }, }, devIeMCS : { files : { '<%= dirMCS %>/<%= dirCss %>/style-ie9-bootstrap.css': '<%= dirMCS %>/<%= dirLess %>/style-bootstrap.less', '<%= dirMCS %>/<%= dirCss %>/style-ie9-common.css': '<%= dirMCS %>/<%= dirLess %>/style-common.less', '<%= dirMCS %>/<%= dirCss %>/style-ie9-view.css': '<%= dirMCS %>/<%= dirLess %>/style-view.less', '<%= dirMCS %>/<%= dirCss %>/style-ie8.css': '<%= dirMCS %>/<%= dirLess %>/style-ie8.less' }, } }, watch : { devDT : { files : [ '<%= dirDT %>/<%= dirLess %>/*.less', '<%= dirDT %>/<%= dirLess %>/bootstrap-less/*.less', '<%= dirDT %>/<%= dirLess %>/bootstrap-less/mixins/*.less', '<%= dirDT %>/<%= dirLess %>/common/*.less', '<%= dirDT %>/<%= dirLess %>/components/*.less', '<%= dirDT %>/<%= dirLess %>/plugin/*.less', '<%= dirDT %>/<%= dirJsAcc %>/*.js', '<%= dirDT %>/<%= dirIconFont %>/_iconfont.less', 'Gruntfile.js' ], // '<%= dirJs %>/*.js' tasks : [ 'less:devDT', 'less:devIeDT' ], // 'uglify:dev', 'autoprefixer:all' options : { livereload: 12344, reload: true }, }, devPB : { files : [ '<%= dirPB %>/<%= dirLess %>/*.less', '<%= dirPB %>/<%= dirLess %>/bootstrap-less/*.less', '<%= dirPB %>/<%= dirLess %>/bootstrap-less/mixins/*.less', '<%= dirPB %>/<%= dirLess %>/common/*.less', '<%= dirPB %>/<%= dirLess %>/components/*.less', '<%= dirPB %>/<%= dirLess %>/plugin/*.less', '<%= dirPB %>/<%= dirJsAcc %>/*.js', '<%= dirPB %>/<%= dirIconFont %>/_iconfont.less', 'Gruntfile.js' ], // '<%= dirJs %>/*.js' tasks : [ 'less:devPB', 'less:devIePB' ], // 'uglify:dev', 'autoprefixer:all' options : { livereload: 12346, reload: true }, }, devMCS : { files : [ '<%= dirMCS %>/<%= dirLess %>/*.less', '<%= dirMCS %>/<%= dirLess %>/bootstrap-less/*.less', '<%= dirMCS %>/<%= dirLess %>/bootstrap-less/mixins/*.less', '<%= dirMCS %>/<%= dirLess %>/common/*.less', '<%= dirMCS %>/<%= dirLess %>/components/*.less', '<%= dirMCS %>/<%= dirLess %>/plugin/*.less', '<%= dirMCS %>/<%= dirJsAcc %>/*.js', '<%= dirMCS %>/<%= dirIconFont %>/_iconfont.less', 'Gruntfile.js' ], // '<%= dirJs %>/*.js' tasks : [ 'less:devMCS', 'less:devIeMCS' ], // 'uglify:dev', 'autoprefixer:all' options : { livereload: 12347, reload: true }, } }, concurrent: { all: { tasks: ['watch:devDT', 'watch:devPB', 'watch:devMCS'], options: { logConcurrentOutput: true } } } }); grunt.loadNpmTasks('grunt-contrib-less'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-concurrent'); grunt.registerTask('default', [ 'less:devMCS', 'less:devIeMCS', 'less:devPB', 'less:devIePB', 'less:devDT', 'less:devIeDT' ]); grunt.registerTask('conc', ['concurrent:all']) // grunt.registerTask('mcs', [ 'watch:devMCS' ]); // grunt.registerTask('pb', [ 'watch:devPB' ]); // grunt.registerTask('dt', [ 'watch:devDT' ]); };
I need to compact all the same less task in one generic that can be used dynamically with one less:dev passing the directory to the task.
i search in internet, the only thing that i found is use global variable on task call, but when this event are nested in other event this variable are lost in nested event (e.g. watch task take the variable but the less task runing inside this watch task are lost and not set).
thanks
解决方案Use arguments passed to your tasks to make on the fly "custom" tasks. For example:
watch: { service: { files: ['src/**/*.*'], tasks: ['<%= grunt.task.current.args[1] %>'] } }
Then you can pass in values (
myARG
in this case) to the task:grunt.registerTask('serve', ['build', 'watch:service:myARG']);
Which makes the task equivalent to
watch: { service: { files: ['src/**/*.*'], tasks: ['myARG'] } }
You can pass in multiple values with more colons
:
if you need to.这篇关于在观看事件上的咕噜动态任务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!