在观看事件上的咕噜动态任务 [英] grunt dynamic task on watch event

查看:133
本文介绍了在观看事件上的咕噜动态任务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,我有一个问题,我需要为不同的目录观看较少的任务。
我需要一种方法来编辑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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆