如何复制多个文件并保持文件夹结构 Gulp

How to copy multiple files and keep the folder structure with Gulp

我正在尝试使用 Gulp:

将文件从一个文件夹复制到另一个文件夹
gulp.task('move-css',function(){
  return gulp.src([
    './source/css/one.css',
    './source/other/css/two.css'

    ]).pipe(gulp.dest('./public/assets/css/'));
});

以上代码正在将 one.css & two.css 复制到 public/assets/css 文件夹。

如果我使用 gulp.src('./source/css/*.css'),它会将所有 CSS 文件复制到 public/assets/css 文件夹,这不是我想要的。

如何select多个文件并保持文件夹结构?

要实现此目的,请指定 base

¶ base - Specify the folder relative to the cwd. Default is where the glob begins. This is used to determine the file names when saving in .dest()


你的情况是:

gulp.task('move-css',function(){
  return gulp.src([
      './source/css/one.css',
      './source/other/css/two.css'
  ],  {base: './source/'}) 
  .pipe(gulp.dest('./public/assets/'));
});

文件夹结构:

.
├── gulpfile.js
├── source
│   ├── css
│   └── other
│       └── css
└── public
    └── assets

我使用 gulp-flatten 并使用此配置:

var gulp = require('gulp'),
    gulpFlatten = require('gulp-flatten');

var routeSources = {
  dist:  './public/',
  app: './app/',
  html_views: {
    path: 'app/views/**/*.*',
    dist: 'public/views/'
  }
};

gulp.task('copy-html-views', task_Copy_html_views);
function task_Copy_html_views() {
  return gulp.src([routeSources.html_views.path])
      .pipe(gulpFlatten({ includeParents: 1 }))
      .pipe(gulp.dest(routeSources.html_views.dist));
}

在那里你可以看到关于 gulp-flatten 的文档:Link

   gulp.task('move-css',function(){
      return gulp
                  .src([ 'source/**'], { base: './' })
                  .pipe(gulp.dest('./public/assets/css/'));
    });

您自己的代码在调用 gulp.src 时没有包含源代码 'source/**' 和基目录 {base:'./'} 的整个目录树,这导致函数失败。 其他地方还好。

gulp.task('move-css',function(){
  return gulp.src([
    './source/css/one.css',
    './source/other/css/two.css'

    ]).pipe(gulp.dest('./public/assets/css/'));
});