如何让Grunt-Contrib-Copy复制相对于给定源路径的文件/目录

mic*_*blu 17 javascript copy gruntjs grunt-contrib-copy

第一次使用此任务,我正在尝试实现的目标如下:

从复制所有目录/文件src/js/bower_components/*build/assets/js/vendor/

我尝试过使用cwd属性但是当我使用它时它根本不起作用..我已经将它设置为:src/js/bower_components/

来自src

.
??? Gruntfile
??? src
    ??? js
        ??? bower_components
            ??? jquery
Run Code Online (Sandbox Code Playgroud)

我目前得到:

.
??? Gruntfile
??? build
    ??? assets
        ??? js
            ??? vendor
                src
                ??? js
                    ??? bower_components
                        ??? jquery
Run Code Online (Sandbox Code Playgroud)

我想要什么

.
??? Gruntfile
??? build
    ??? assets
        ??? js
            ??? vendor
                ???jquery
Run Code Online (Sandbox Code Playgroud)

这是我目前的咕噜声任务

copy: {
  main: {
    src: 'src/js/bower_components/*',
    dest: 'build/assets/js/vendor/',
    expand: true,
  }
},
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

Kos*_*aur 20

我已经用这样的树建立了一个示例项目:

.
??? Gruntfile.js
??? package.json
??? src
    ??? js
        ??? foo.js
Run Code Online (Sandbox Code Playgroud)

使用下面的Gruntfile:

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');
  });

};
Run Code Online (Sandbox Code Playgroud)

这给了我这个结构:

.
??? Gruntfile.js
??? dist
?   ??? js
?       ??? foo.js
??? package.json
??? src
    ??? js
        ??? foo.js
Run Code Online (Sandbox Code Playgroud)

当我改变cwd以便Gruntfile读取:

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');
  });

};
Run Code Online (Sandbox Code Playgroud)

我有这个目录结构:

.
??? Gruntfile.js
??? dist
?   ??? foo.js
??? package.json
??? src
    ??? js
        ??? foo.js
Run Code Online (Sandbox Code Playgroud)

所以看起来cwd你需要什么.也许你srcsrc/js/bower_components/*设置时离开cwdsrc/js/bower_components?在这种情况下,src应该阅读类似的东西**/*.js,但取决于你真正需要的东西.