grunt-copy怎么复制某个文件夹所有文件



 copy: {
    html: {
        src: 'index/*', // index/*.html 或者 index/**都不行
        dest: 'dist/'
    }
},

有两个问题:
① 我 index 里有多个文件,我想复制到 dist 下,结果只能复制第一个过去(命令行里显示的是 复制成功了多个)
② 我想复制过去不把 index 这个文件夹也带过去,只把各个文件复制到 dist 目录下,而不是复制到 dist/index/ 目录下
请问怎么解决

grunt JavaScript

灼眼的忧郁 9 years, 10 months ago

 copy: {
    html: {
        files: [
            {
                expand: true,
                cwd: 'index',
                src: ['index/**'],
                dest: 'dest'
            }               
        ]
    }
}

————————————————————————————————————————————
修复


 copy: {
    html: {
        files: [
            {
                expand: true,
                cwd: 'index',
                src: ['**'],
                dest: 'dest'
            }               
        ]
    }
}

故乡的茶干 answered 9 years, 10 months ago


 copy: {
    html: {
        expand: true,
        cwd: 'index',//切换到 index 目录下
        src: '**/*',//该目录下所有文件
        dest: 'dist/'//目标目录
    }
},


楼主所采纳的这个人的答案是不正确的.

clipboard.png

错误的地方在于, src 中又一次写了 index 这个路径,所以 最终复制的路径是 index/index/ 的所有文件.
而不是楼主所提的 index/ 下的所有文件.

证明:
gruntfile.js


 module.exports = function(grunt) {
    grunt.file.defaultEncoding = 'utf8';
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        copy: {
            html: {
                files: [{
                    expand: true,
                    cwd: 'index',
                    src: ['index/**'],
                    dest: 'dest/'
                }]
            }
        }
    });

    grunt.loadNpmTasks('grunt-contrib-copy');
    grunt.registerTask('default', ['copy']);
};

package.json


 {
    "name": "copy test",
    "version": "0.0.1",
    "description": "test",
    "author": "xqin",
    "devDependencies": {
        "grunt": "~0.4.1",
        "grunt-contrib-copy": "^0.7.0"
    }
}

目录结构:


 T:\test>tree . /f
卷   的文件夹 PATH 列表
卷序列号为 ABCD-5678
T:\TEST
│  gruntfile.js
│  package.json
│
├─dest
└─index
    │  1.html
    │  2.js
    │
    ├─123
    ├─23424
    │      234.html
    │
    └─index
            14444.html

执行 grunt 命令之后的结果:


 T:\test>tree . /f
卷   的文件夹 PATH 列表
卷序列号为 ABCD-5678
T:\TEST
│  gruntfile.js
│  package.json
│
├─dest
│  └─index
│          14444.html
│
└─index
    │  1.html
    │  2.js
    │
    ├─123
    ├─23424
    │      234.html
    │
    └─index
            14444.html

可以看到的, 楼主所采纳的这个回复, 并没有达到楼主的要求.
src: ['index/**'], 改为 src: '**/*', 后再将执行 grunt 的结果(执行命令前将 dest 目录中的内容清空).


 T:\test>tree . /f
卷   的文件夹 PATH 列表
卷序列号为 ABCD-5678
T:\TEST
│  gruntfile.js
│  package.json
│
├─dest
│  │  1.html
│  │  2.js
│  │
│  ├─123
│  ├─23424
│  │      234.html
│  │
│  └─index
│          14444.html
│
└─index
    │  1.html
    │  2.js
    │
    ├─123
    ├─23424
    │      234.html
    │
    └─index
            14444.html

这样的结果, 才是楼主需要的吧.

以上 tree 命令的执行结果中已将 node_modules 这个目录排除.

黑暗执行厅 answered 9 years, 10 months ago

Your Answer