9

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

目录结构:

成分

  • 组分A
    • js
    • 图像
      • img文件夹A
      • 图片文件夹B
    • css
  • 组分B
    • js
    • 图像
      • img文件夹A

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

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

资产

  • 图像
    • 目录
      • img文件夹A
      • 图片文件夹B
    • 目录
      • img文件夹A

关于如何在不指定每个组件目录的情况下在 grunt 中执行此操作的任何想法(它需要完全自动化)?

4

2 回答 2

22

知道有点晚了,但这应该可以完成工作,像这样使用'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 魔术在文件对象中,没有很好的文档记录,但是文档在这里,经过一两次阅读后,它是有道理的诚实!

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

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

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

于 2014-02-13T09:57:49.563 回答
1

这是相当简单的使用grunt.file.expand.

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

于 2013-10-02T13:57:46.077 回答