grunt-contrib-copy - 拷贝时忽略文件夹

31

给定以下源代码树:

dev
 丨- psd
     丨- psd.psd
     丨- png.png
 丨- css
     丨- css.css
 丨- image
     丨- 1.jpg
     丨- 2.png
 丨html.html

如何将文件复制到pub目录,忽略如下所示的psd文件夹?

pub
 丨- css
     丨- css.css
 丨- image
     丨- 1.jpg
     丨- 2.png
 丨html.html

我尝试了以下方法:

{
 expand: true,
 src: ['dev/**/*', '!dev/psd/**/*'],
 dest: 'pub/'
}

但这会导致一个空的psd目录。

1个回答

65

尝试按照以下Gruntfile.js进行操作。它会忽略psd目录。解决方案可以在以下问题中找到。

module.exports = function(grunt) {

  // Project configuration.
  grunt.initConfig({
        copy: {
          main: {
            src: ['**/*',  '!**/psd/**'],
            expand: true,
            cwd: 'dev',
            dest: 'pub',
          }
    }
  });

  // Load the plugin that provides the "copy" task.
    grunt.loadNpmTasks('grunt-contrib-copy');

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

};

示例设置。

mkdir gruntQuestion1
cd gruntQuestion1/
mkdir dev
mkdir dev/psd
mkdir dev/css
mkdir dev/image
touch dev/html.html
touch dev/psd/psd.psd
touch dev/psd/png.png
touch dev/css/css.css
touch dev/image/1.jpg
touch dev/image/2.png


atilla$ rm -rf pub/
atilla$ grunt
Running "copy:main" (copy) task
Created 2 directories, copied 4 files

Done, without errors.
atilla$ tree pub/
pub/
├── css
│   └── css.css
├── html.html
└── image
    ├── 1.jpg
    └── 2.png

2 directories, 4 files    

5
很高兴知道你需要用 ** 包裹你要排除的目录。这个方法对我有效:src: ['**/*', '!**/bower_components/**', '!**/node_modules/**', '!gitignore', '!.jshintrc', '!*.json'] - Mattijs
还需添加'!*.txt','!*.md' - vanduc1102
1
谢谢你的回答——不过我看到的是它在目标文件夹上创建了文件夹,但没有填充文件。如果需要,这是一个微不足道的问题,我可以忽略它,但它确实让我有点困扰!有什么建议吗? - Greg Pettit
谢谢这个 :) 任务页面上没有提到!**/directory/goes/here选项。 - Jonathan Cardoz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接