2014-11-28 2 views
1

Привет, у меня есть проблема, мне нужно смотреть меньше задач для разных каталогов. Мне нужен метод для редактирования меньше задачи, и вместо этого для их дублирования мне нужно использовать переменную dir внутри нее.grunt dynamic task on watch event

есть мой код:

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

мне нужно уплотнить все же меньше задачи в одном родовом, который может быть использован динамически один меньше: DEV передавая каталог с этой задачей.

Я ищу в Интернете, единственное, что я нашел, это использовать глобальную переменную при вызове задачи, но когда это событие вложено в другое событие, эта переменная теряется во вложенном событии (например, задача просмотра принимает переменную, но задача меньше запуск внутри этой задачи часов теряется и не устанавливается).

благодаря

ответ

1

использовать аргументы, передаваемые ваши задачи, чтобы сделать на лету «пользовательских» задач. Например:

watch: { 
    service: { 
     files: ['src/**/*.*'], 
     tasks: ['<%= grunt.task.current.args[1] %>'] 
    } 
} 

Затем вы можете пройти в значениях (myARG в данном случае) к задаче:

grunt.registerTask('serve', ['build', 'watch:service:myARG']); 

что делает эквивалент задачи для

watch: { 
    service: { 
     files: ['src/**/*.*'], 
     tasks: ['myARG'] 
    } 
} 

Вы можете пройти в несколько значений с большим количеством колоний :, если вам нужно.

 Смежные вопросы

  • Нет связанных вопросов^_^