# 刪除文件和文件夾
你也許會想要在編譯文件之前刪除一些文件。由于刪除文件和文件內容并沒有太大關系,所以,我們沒必要去用一個 gulp 插件。最好的一個選擇就是使用一個原生的 node 模塊。
因為 [`del`](https://github.com/sindresorhus/del) 模塊支持多個文件以及 [globbing](https://github.com/sindresorhus/multimatch#globbing-patterns),因此,在這個例子中,我們將使用它來刪除文件:
```
$ npm install --save-dev gulp del
```
假想有如下的文件結構:
```
.
├── dist
│ ├── report.csv
│ ├── desktop
│ └── mobile
│ ├── app.js
│ ├── deploy.json
│ └── index.html
└── src
```
在 gulpfile 中,我們希望在運行我們的編譯任務之前,將 `mobile` 文件的內容先清理掉:
```
var gulp = require('gulp');
var del = require('del');
gulp.task('clean:mobile', function (cb) {
del([
'dist/report.csv',
// 這里我們使用一個通配模式來匹配 `mobile` 文件夾中的所有東西
'dist/mobile/**/*',
// 我們不希望刪掉這個文件,所以我們取反這個匹配模式
'!dist/mobile/deploy.json'
], cb);
});
gulp.task('default', ['clean:mobile']);
```
## 在管道中刪除文件
你可能需要在管道中將一些處理過的文件刪除掉。
我們使用 [vinyl-paths](https://github.com/sindresorhus/vinyl-paths) 模塊來簡單地獲取 stream 中每個文件的路徑,然后傳給 `del` 方法。
```
$ npm install --save-dev gulp del vinyl-paths
```
假想有如下的文件結構:
```
.
├── tmp
│ ├── rainbow.js
│ └── unicorn.js
└── dist
```
```
var gulp = require('gulp');
var stripDebug = require('gulp-strip-debug'); // 僅用于本例做演示
var del = require('del');
var vinylPaths = require('vinyl-paths');
gulp.task('clean:tmp', function () {
return gulp.src('tmp/*')
.pipe(stripDebug())
.pipe(gulp.dest('dist'))
.pipe(vinylPaths(del));
});
gulp.task('default', ['clean:tmp']);
```
只有在已經使用了其他的插件之后才需要這樣做,否則,請直接使用 `gulp.src` 來代替。
- gulp 中文文檔
- 入門指南
- gulp API 文檔
- 編寫插件
- 指導
- 使用 buffer
- 使用 Stream 處理
- 測試
- FAQ
- gulp 技巧集
- 整合 streams 來處理錯誤
- 刪除文件和文件夾
- 使用 watchify 加速 browserify 編譯
- 增量編譯打包,包括處理整所涉及的所有文件
- 將 buffer 變為 stream (內存中的內容)
- 在 gulp 中運行 Mocha 測試
- 僅僅傳遞更改過的文件
- 從命令行傳遞參數
- 只重新編譯被更改過的文件
- 每個文件夾生成單獨一個文件
- 串行方式運行任務,亦即,任務依賴
- 擁有實時重載(live-reloading)和 CSS 注入的服務器
- 通過 stream 工廠來共享 stream
- 指定一個新的 cwd (當前工作目錄)
- 分離任務到多個文件中
- 使用外部配置文件
- 在一個任務中使用多個文件來源
- Browserify + Uglify2 和 sourcemaps
- Browserify + Globs
- 同時輸出一個壓縮過和一個未壓縮版本的文件
- 改變版本號以及創建一個 git tag
- Swig 以及 YAML front-matter 模板