如何复制多个文件并保持文件夹结构 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/'));
});
我正在尝试使用 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/'));
});