首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用gulp选择和移动目录及其文件

使用gulp选择和移动目录及其文件
EN

Stack Overflow用户
提问于 2014-02-04 16:00:06
回答 2查看 79.4K关注 0票数 102

我目前正在使用gulp调用一个bash脚本,该脚本清理我的dist/目录并将适当的文件移到干净的目录中。我希望使用gulp来完成此操作,因为我不确定该脚本是否可以在非*nix文件系统上运行。

到目前为止,我使用gulp clean模块清理dist/目录,但是当我尝试将所需的目录及其文件移动到dist文件夹时,这些目录是空的。

代码语言:javascript
复制
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/目录中填充了正确的目录,但这些目录都是空的

代码语言:javascript
复制
$ ls dist/*
dist/manifest.json

dist/_locales:

dist/icons:

dist/page_action:

如何将目录及其内容复制到dist/文件夹?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-04 23:51:41

您需要包含src的base option,它将按您想要的方式保留文件结构:

代码语言:javascript
复制
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/即可。

票数 168
EN

Stack Overflow用户

发布于 2017-03-30 13:22:36

原问题只针对目录(也称为文件夹)在其gulp.src中,即在本例中为gulp.src(['_locales', ..._locales目录的名称。

公认的答案是在其gulp.src中使用glob pattern文件指向这些目录中的任何位置,即gulp.src(['./_locales/**/*.*', ... (请注意双星号和filename.extension星号)。公认的答案是有效的。

...but接受的答案只强调base选项

您需要将base 选项包含到源...

我做了实验,发现:

  1. 严格地说,没有必要使用base选项来实现OP所要求的:"...and将适当的文件移到干净的目录中。“base选项确实保留了folder+file structure (如接受的答案中所述),但base选项是not to move the file as the OP asked。保留folder+file结构可能是OP 对的期望,所以公认的答案是好的,但是...
  2. 只是重申一下移动文件的作用,它是glob模式:

代码语言:javascript
复制
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!**

  1. 接受的答案还会改变一些东西;它会在传递给gulp.src的每个路径参数前添加一个./前缀。我认为这是不必要的/冗余的;如果没有./,(就像在OP问题中一样),路径将相对于当前目录进行解析--导致相同的行为。但是,在./

中明确表示可能是一种好的做法

如果我弄错了请告诉我。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21546931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档