使用gulp将多个特定文件和文件夹复制到另一个目录

Kev*_*ier 2 javascript gulp

我正在尝试使用gulp.srcgulp.dest从我的基目录复制多个文件和文件夹.到一个新的子目录dist.

基目录是Symfony项目的根目录.

这是我的gulpfile:

var files = [
  './app**/*.*',
  './bin**/*.*',
  './src**/*.*',
  './tests**/*.*',
  './var/',
  './vendor/',
  './composer.json']

gulp.task('distribute', function() {
  return gulp.src(files , { base: '.' }).pipe(gulp.dest('./dist'));
});
Run Code Online (Sandbox Code Playgroud)

我只是不明白,为什么这不起作用.结果,我得到一个dist包含指定文件夹内容的文件夹.所以app,bin,src等被失踪根文件夹.

Emi*_*ron 6

移动目录本身

基于使用gulp选择和移动目录及其文件,使用./base选项并确保路径正确:

var files = [
  './app/**/*.*',
  './bin/**/*.*',
  './src/**/*.*',
  './tests/**/*.*',
  './var/',
  './vendor/',
  './composer.json'
];

gulp.task('distribute', function() {
  return gulp.src(files , { base: './' })
    .pipe(gulp.dest('dist'));
});
Run Code Online (Sandbox Code Playgroud)

移动每个目录中的文件

不要使用该base选项并稍微改变您的路径.

var files = [
  'app/**/*.*',
  'bin/**/*.*',
  'src/**/*.*',
  'tests/**/*.*',
  'var/',
  'vendor/',
  'composer.json'
];

gulp.task('distribute', function() {
    return gulp.src(files)
        .pipe(gulp.dest('./dist'));
});
Run Code Online (Sandbox Code Playgroud)

灵活地将每个目录威胁为任务

如果要自己移动文件夹,只需使用任务生成器功能为每个文件夹创建一个任务.

function moveDirTask(dir, dest) {
    return function() {
        return gulp.src(`${dir}/**/*`)
            .pipe(gulp.dest(`${dest}/${dir}/`));
    };
}

gulp.task('move-app', moveDirTask('app', 'dest'));
gulp.task('move-bin', moveDirTask('bin', 'dest'));
gulp.task('move-src', moveDirTask('src', 'dest'));
gulp.task('move-tests', moveDirTask('tests', 'dest'));
// etc.

gulp.task('distribute', [
    'move-app',
    'move-bin',
    'move-src',
    'move-tests'
    // etc.
], function() {
    return gulp.src('composer.json')
        .pipe(gulp.dest('dest'));
});
Run Code Online (Sandbox Code Playgroud)