我目前正在使用gulp调用一个bash脚本,该脚本清理我的dist/
目录并将适当的文件移到干净的目录中。我希望使用gulp来完成此操作,因为我不确定该脚本是否可以在非*nix文件系统上运行。
到目前为止,我使用gulp clean模块清理dist/
目录,但是当我尝试将所需的目录及其文件移动到dist文件夹时,这些目录是空的。
var gulp = require('gulp'),
clean = require('gulp-clean');
gulp.task('clean', function(){
return gulp.src(['dist/*'], {read:false})
.pipe(clean());
});
gulp.task('move',['clean'], function(){
gulp.src(['_locales', 'icons', 'src/page_action', 'manifest.json'])
.pipe(gulp.dest('dist'));
});
gulp.task('dist', ['move']);
调用gulp dist
会导致dist/
目录中填充了正确的目录,但这些目录都是空的
$ ls dist/*
dist/manifest.json
dist/_locales:
dist/icons:
dist/page_action:
如何将目录及其内容复制到dist/
文件夹?
发布于 2014-02-04 23:51:41
您需要包含src的base
option,它将按您想要的方式保留文件结构:
var filesToMove = [
'./_locales/**/*.*',
'./icons/**/*.*',
'./src/page_action/**/*.*',
'./manifest.json'
];
gulp.task('move',['clean'], function(){
// the base option sets the relative root for the set of files,
// preserving the folder structure
gulp.src(filesToMove, { base: './' })
.pipe(gulp.dest('dist'));
});
此外,如果您将所有这些源文件都放在项目的根目录中,那么将来可能会遇到麻烦。
如果可以,我建议您使用单个src/
文件夹,并将所有特定于应用程序的文件移入其中。这使得维护变得更容易,并防止特定于构建的文件与特定于应用程序的文件混淆。
如果这样做,那么只需将上面示例中出现的所有./
替换为src/
即可。
发布于 2017-03-30 13:22:36
原问题只针对目录(也称为文件夹)在其gulp.src
中,即在本例中为gulp.src(['_locales', ...
,_locales
是目录的名称。
公认的答案是在其gulp.src
中使用glob
pattern将文件指向这些目录中的任何位置,即gulp.src(['./_locales/**/*.*', ...
(请注意双星号和filename.extension星号)。公认的答案是有效的。
...but接受的答案只强调base
选项
您需要将
base
选项包含到源...
我做了实验,发现:
base
选项来实现OP所要求的:"...and将适当的文件移到干净的目录中。“base
选项确实保留了folder+file structure (如接受的答案中所述),但base
选项是not to move the file as the OP asked。保留folder+file结构可能是OP 对的期望,所以公认的答案是好的,但是...glob
模式:1. Double-asterisk (`.../**/...`) searches recursively throughout all subfolders, and subfolders' subfolders', etc.
2. Filename.extension asterisks (`.../*.*`) finds **files** of all _names_, and all _extensions_. **So I think this part deserves the most emphasis!**
gulp.src
的每个路径参数前添加一个./
前缀。我认为这是不必要的/冗余的;如果没有./
,(就像在OP问题中一样),路径将相对于当前目录进行解析--导致相同的行为。但是,在./
中明确表示可能是一种好的做法
如果我弄错了请告诉我。
https://stackoverflow.com/questions/21546931
复制相似问题