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

时间:2022-01-07 23:11:33

I am trying to copy file's from one folder to another folder using 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/'));
});

above code is copying one.css & two.css to public/assets/css folder

上面的代码是复制一个。css和两个。css公共/资产/ css文件夹

and if i use gulp.src('./source/css/*.css') it will copy all css file to public/assets/css folder which is not i want

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

my question is how to select multiple files and keep the folder stracture ?

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

2 个解决方案

#1


89  

To achieve this please specify 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()

¶base -指定相对于慢性消耗病的文件夹。违约是手套开始的地方。这用于在.dest()中保存时确定文件名。


In your case it would be:

就你而言,它将是:

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

Folder structure :

文件夹结构:

|-gulpfile.js
|-source
|   |-css
|   |-other
|      |-css
|-public
|   |-assets

#2


1  

I use gulp-flatten and use this configuration.

我使用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));
}

And there you can see the documentations about gulp-flatten: Link.

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

#1


89  

To achieve this please specify 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()

¶base -指定相对于慢性消耗病的文件夹。违约是手套开始的地方。这用于在.dest()中保存时确定文件名。


In your case it would be:

就你而言,它将是:

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

Folder structure :

文件夹结构:

|-gulpfile.js
|-source
|   |-css
|   |-other
|      |-css
|-public
|   |-assets

#2


1  

I use gulp-flatten and use this configuration.

我使用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));
}

And there you can see the documentations about gulp-flatten: Link.

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