文件夹复制包括gulp中的文件

时间:2015-09-16 11:00:05

标签: node.js gulp

我正在尝试将2个文件夹复制到单个构建文件夹中,而对于第二个路径,我想将整个libs文件夹(包括libs文件夹本身)复制到目标。

var paths = {
    'standalone' : '../app-ui/assets/js',
    'standalone_libs' : '../app-ui/libs',
    'destination' : '../SomeFolder'
}

gulp.task('folder-copy', function() {

    return gulp.src([paths.standalone_js + '/*', paths.standalone_libs + '/*']).pipe(gulp.dest(paths.destination));
});

Structure according to code
->SomeFolder
   ->app.js [ file from ../app-ui/assets/js ]
   -> angular/angular.js [ file from ../app-ui/libs ]
   -> lodash/lodash.js   [ file from ../app-ui/libs ]

Actual Structure wanted
->SomeFolder
   ->app.js [ file from ../app-ui/assets/js ]
   -> libs
          -> angular/angular.js [ file from ../app-ui/libs ]
          -> lodash/lodash.js   [ file from ../app-ui/libs ] 

3 个答案:

答案 0 :(得分:0)

尝试删除/*,因为这意味着文件夹中的所有内容都是您想要的。

因此对于libs,我不会添加/*,如下所示

 return gulp.src([paths.standalone_js + '/*', paths.standalone_libs ]).pipe(gulp.dest(paths.destination));

答案 1 :(得分:0)

您可以在gulp.src中指定基数:

return gulp.src(['some/path/app/*', 'libs/**/*'], {base: '.'})
    .pipe(gulp.dest('build'));

这将复制libs中的所有文件,目录结构完好无损。但是app.js也会保留目录结构......

我只会做两个单独的副本。 您可以使用merge-stream。在gulp存储库中有一个recipe。它会归结为这样的事情:

var merge = require('merge-stream')

var libs= gulp.src('libs/**/*', {base: '.'})
    .pipe(gulp.dest('build'));

var app = gulp.src('app.js')
    .pipe(gulp.dest('build'));

return merge(libs, app);

答案 2 :(得分:0)

如何改变这一点:

var paths = {
    'standalone' : '../app-ui/assets/js',
    'standalone_libs' : '../app-ui/libs',
    'destination' : '../SomeFolder'
}

到此:

var paths = {
    'standalone' : '../app-ui/assets/js',
    'standalone_libs' : '../app-ui/(libs)',
    'destination' : '../SomeFolder'
}