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


77

我正在尝试使用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.csspublic/assets/css文件夹中。

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

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


@lal CSS文件可以在不同的文件夹,这样的正则表达式是不是在这种情况下,恕我直言有用
NullPoiиteя

问题是像多个文件夹中的文件被复制到一个文件夹一样 public/assets/css
Analal S

yupp,就是这样,我想这样做
NullPoiиteя

Answers:


140

为此,请指定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

20
如果您的文件具有完全不同的目录结构(例如['./lib/one.js', './models/two.js']),则可以添加{base: '.'}使其保留其整个结构。
蒂姆(Tim)

如何解析src中的每个文件,文件夹和子文件夹?
Reign.85

1
请用双**检查srcgulp.src('**/*.*')
Analal S

1

我使用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的文档:链接


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

您自己的代码在调用时不包括source'source/**'和base的整个目录树,从而导致函数失败。其他地方还可以。{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/'));
});

所以皱着眉头只代码答案。为了获得长期价值,可以帮助未来的访客学习并将其知识应用到他们自己的问题上,并增加投票的机会,请考虑在您的答案中添加解释,突出您的答案以解决OP问题。
SherylHohman
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.