我目前正在使用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
复制相似问题