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

时间:2015-05-06 05:04:20

标签: javascript css gulp

我正在尝试使用gulp

将文件从一个文件夹复制到另一个文件夹
one.css

以上代码正在复制two.css& public/assets/cssgulp.src('./source/css/*.css')文件夹

如果我使用public/assets/css,它会将所有CSS文件复制到{{1}}文件夹,这不是我想要的

我的问题是如何选择多个文件并保留文件夹结构?

3 个答案:

答案 0 :(得分:121)

要实现此目的,请指定base

  

¶ base - 指定相对于cwd的文件夹。默认是glob开始的地方。这用于在.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

答案 1 :(得分:2)

我使用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.

答案 2 :(得分:-3)

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

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

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

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