2014-03-27 7 views
16

Zum ersten Mal mit dieser Aufgabe und was ich versuche zu erreichen, zu erhalten, sind die folgenden:Wie Grunt-Contrib-Copy zum Kopieren von Dateien/Verzeichnisse relativ zum angegebenen Quellpfad

Kopie all Verzeichnisse/Dateien von src/js/bower_components/* zu build/assets/js/vendor/

ich habe versucht, cwd Eigenschaft verwenden aber es nicht funktioniert, wenn ich es verwenden .. ich habe es zu setzen: src/js/bower_components/

Von src

. 
├── Gruntfile 
└── src 
    └── js 
     └── bower_components 
      └── jquery 

ich zur Zeit:

. 
├── Gruntfile 
└── build 
    └── assets 
     └── js 
      └── vendor 
       src 
       └── js 
        └── bower_components 
         └── jquery 

Was ich hier

. 
├── Gruntfile 
└── build 
    └── assets 
     └── js 
      └── vendor 
       └──jquery 

möchte meine aktuelle Grunzen Aufgabe

copy: { 
    main: { 
    src: 'src/js/bower_components/*', 
    dest: 'build/assets/js/vendor/', 
    expand: true, 
    } 
}, 

Vielen Dank für jede Hilfe

Antwort

19

Ich habe ein Beispielprojekt mit Baum wie folgt aufgebaut:

. 
├── Gruntfile.js 
├── package.json 
└── src 
    └── js 
     └── foo.js 

die unter Gruntfile Verwendung:

module.exports = function(grunt) { 
    require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks); 

    grunt.initConfig({ 
    copy   : { 
     foo : { 
     files : [ 
      { 
      expand : true, 
      dest : 'dist', 
      cwd : 'src', 
      src : [ 
       '**/*.js' 
      ] 
      } 
     ] 
     } 
    } 
    }); 

    grunt.registerTask('build', function(target) { 
    grunt.task.run('copy'); 
    }); 

}; 

Dies gab mir diese Struktur:

. 
├── Gruntfile.js 
├── dist 
│   └── js 
│    └── foo.js 
├── package.json 
└── src 
    └── js 
     └── foo.js 

Wenn Ich hatte cwd geändert, so dass die Gruntfile lesen:

module.exports = function(grunt) { 
    require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks); 

    grunt.initConfig({ 
    copy   : { 
     foo : { 
     files : [ 
      { 
      expand : true, 
      dest : 'dist', 
      cwd : 'src/js', 
      src : [ 
       '**/*.js' 
      ] 
      } 
     ] 
     } 
    } 
    }); 

    grunt.registerTask('build', function(target) { 
    grunt.task.run('copy'); 
    }); 

}; 

bekam ich diese dir Struktur:

. 
├── Gruntfile.js 
├── dist 
│   └── foo.js 
├── package.json 
└── src 
    └── js 
     └── foo.js 

So scheint es, wie cwd tut, was Sie brauchen. Vielleicht haben Sie src unter src/js/bower_components/* bei der Einstellung cwd bis src/js/bower_components verlassen? In diesem Fall sollte src etwas wie **/*.js lesen, aber abhängig davon, was Sie wirklich brauchen.

+0

Bemerkenswert ist, dass grunt-contrib-copy Dateien einzeln kopiert, wenn das **/* -Muster verwendet wird, was * extrem langsam * ist. Sie sind wahrscheinlich besser dran mit einem anderen Plugin für große Dateihierarchien. – Doug

+0

Das gibt mir: Ausführen "Build" Aufgabe Warnung: Task "Kopieren" nicht gefunden. Verwenden Sie --force, um fortzufahren. –

+0

Sie können flatten: true hinzufügen, wenn Sie alle im selben Zielordner haben möchten –