【问题标题】:Using Grunt Copy to copy images to new directory使用 Grunt Copy 将图像复制到新目录
【发布时间】:2013-10-25 04:07:28
【问题描述】:

我正在使用 Grunt 0.4.1 和 Grunt-contrib-copy 版本 0.4.1。我正在尝试将图像从 src 目录复制到分发目录,但它正在复制完整的 src 目录,而不仅仅是图像目录的内容。换句话说,这是创建 dist/images/src/images/...,而我希望结果只是 dist/images/...

这是我的复制任务:

copy: {
  images: {
    files: {
      'dist/images/': 'src/images/**/*'
    }
  }
}

它的运行方式如下:

// Default task.
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-less');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.registerTask('default', ['less', 'concat', 'uglify', 'cssmin', 'copy']);

我如何获取它以便只有 src/images 的子目录被复制到 dist/images 中?

这些文件已经被压缩,只需要在构建过程中复制到目标。

【问题讨论】:

    标签: gruntjs


    【解决方案1】:

    真正解决我的问题的是使用“cwd”指令指定要从中复制的根目录结构,然后是与上面完全相同的 src。刚回来发布这个,基本上看到了我想出的相同解决方案。这对我有用:

    copy: {
      images: {
        files: [
          { 
            expand: true,
            cwd: 'src/images/', 
            src: ['**/*.{png,jpg,svg}'], 
            dest:'dist/images/' 
          }
        ]
      }
    }
    

    “cwd”属性允许您定义要复制的源的根。这不会包含在复制文件的路径中。所以在我的例子中,通过将“cwd”定义为“src/images”,我可以将源定义为“**/*.{png,jpg,svg}”这会找到源图像中的所有子目录目录,并且只复制带有我提供的扩展名的文件。这给了我想要的结果:dist/images/... 所有子目录都符合预期。

    不使用“cwd”,grunt-contrib-copy 将整个源代码树结构复制到目标位置。 “cwd”属性允许您从一个文件结构中挑选子目录和文件并将它们复制到另一个文件结构中。

    【讨论】:

      【解决方案2】:

      您需要指定flatten 选项,它会删除目录树。

      copy: {
          images: {
              expand:     true,
              cwd:        'src/images/',
              src:        ['**/*'],
              dest:       'dist/images/',
              filter:     'isFile',
              flatten:    true
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-13
        • 1970-01-01
        • 1970-01-01
        • 2015-04-08
        相关资源
        最近更新 更多