Grunt递归副本

时间:2013-10-02 13:41:32

标签: gruntjs

我正在设置一个Grunt脚本,需要复制和重组图像目录,从A到B.很简单。

目录结构:

成分<​​/ P>

  • componentA
    • JS​​
    • IMG
      • imgfolderA
      • imgfolderB
    • CSS
  • 以componentB
    • JS​​
    • IMG
      • imgfolderA

每个img目录都可以包含这些目录中的其他目录和目录,以帮助组织图像。

我想使用Grunt获取所有这些图像并将它们放在一个目录下(assets / img):

资产

  • IMG
    • DIRA
      • imgfolderA
      • imgfolderB
    • DIRB
      • imgfolderA

如果我没有指定每个组件目录(它需要完全自动化),我怎么能在grunt中执行此操作?

2 个答案:

答案 0 :(得分:20)

知道它有点晚了但是应该做这个工作,像这样使用'grunt-contrib-copy'

module.exports = function (grunt) {
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    copy: {
      production: {
        files: [{
            expand: true,
            cwd: "componentA/img/imgfolderA/",
            src: ["*.*", "**/*.*"],
            dest: "./assets/img/dirA/",
          },
          {
            expand: true,
            cwd: "componentB/img/imgfolderB/",
            src: ["*.*", "**/*.*"],
            dest: "./assets/img/dirB/",
          },
        ]
      }
    }
  });

  // Production Build Tools
  grunt.loadNpmTasks('grunt-contrib-copy');

  // Default Production Build task(s).
  grunt.registerTask('default', ['copy']);
};

ps magic在文件对象中,没有很好的文档记录,但文档在这里,经过一两次读取后才有道理!

grunt-contrib-copy setup:https://github.com/gruntjs/grunt-contrib-copy(自述文件底部)

文件对象设置:http://gruntjs.com/configuring-tasks#globbing-patterns

任务设置:http://gruntjs.com/configuring-tasks

答案 1 :(得分:1)

使用grunt.file.expand,这很简单。

只需传递匹配的glob模式(例如**/img/**),然后递归返回的匹配文件值进行复制。