# 整合 streams 來處理錯誤
默認情況下,在 stream 中發生一個錯誤的話,它會被直接拋出,除非已經有一個時間監聽器監聽著 `error` 時間。 這在處理一個比較長的管道操作的時候會顯得比較棘手。
通過使用 [stream-combiner2](https://github.com/substack/stream-combiner2),你可以將一系列的 stream 合并成一個,這意味著,你只需要在你的代碼中一個地方添加監聽器監聽 `error` 時間就可以了。
這里是一個在 gulpfile 中使用它的例子:
```
var combiner = require('stream-combiner2');
var uglify = require('gulp-uglify');
var gulp = require('gulp');
gulp.task('test', function() {
var combined = combiner.obj([
gulp.src('bootstrap/js/*.js'),
uglify(),
gulp.dest('public/bootstrap')
]);
// 任何在上面的 stream 中發生的錯誤,都不會拋出,
// 而是會被監聽器捕獲
combined.on('error', console.error.bind(console));
return combined;
});
```
- 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 模板