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

Javascript 使用gulp将多个特定文件和文件夹复制到另一个目录,javascript,gulp,Javascript,Gulp,我正在尝试使用gulp.src和gulp.dest将多个文件和文件夹从我的基本目录复制到新的子目录dist 基本目录是Symfony项目的根目录 这是我的gulpfile: var files = [ './app**/*.*', './bin**/*.*', './src**/*.*', './tests**/*.*', './var/', './vendor/', './composer.json'] gulp.task('distribute', functi

我正在尝试使用
gulp.src
gulp.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'));
});
我只是不明白,为什么这不起作用。结果,我得到一个包含指定文件夹内容的
dist
文件夹。因此,
app
bin
src
等作为根文件夹丢失。

移动目录本身 基于,对
基本
选项使用
/
,并确保路径正确:

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

gulp.task('distribute', function() {
  return gulp.src(files , { base: './' })
    .pipe(gulp.dest('dist'));
});
在每个目录中移动文件 不要使用
base
选项,稍微更改一下路径

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

gulp.task('distribute', function() {
    return gulp.src(files)
        .pipe(gulp.dest('./dist'));
});
将每个目录作为任务进行威胁的灵活方式 如果要移动文件夹本身,只需使用任务生成器函数为每个文件夹创建一个任务

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

谢谢你的回答。但这会复制前4个文件夹的内容,但不会复制文件夹本身。我如何存档此文件?@KevinGlier我更新了答案以反映您的预期行为。是否无法让它像linux cp命令一样工作?cp-r app src bin tests composer.json dist/?@KevinGlier将
base
设置为
/
,是否有效?谢谢,“移动目录本身”帮我做到了这一点。我刚换了房间。在指向单个*的路径中,这样也可以复制bin文件夹中的shell脚本。