Skip to content

Commit f8e3322

Browse files
committedOct 20, 2015
feat(gulp): エコシステムについて
1 parent cffa9c7 commit f8e3322

File tree

1 file changed

+26
-5
lines changed

1 file changed

+26
-5
lines changed
 

‎ja/gulp/README.md

+26-5
Original file line numberDiff line numberDiff line change
@@ -214,10 +214,31 @@ BufferはStringと相互変換が可能であるため、多くのgulpプラグ
214214

215215
つまり、prefixを付けるといった変換処理自体は、既存のライブラリで行うことができるようになっています。
216216

217-
gulpプラグインの仕組みは[vinyl](https://github.com/gulpjs/vinyl "vinyl")オブジェクトのデータをプラグイン同士でやり取りすることで入力/変換/出力を行い、そのインタフェースとして既存のNode.js Streamを使っていると言えます。
217+
gulpプラグインの仕組みは[vinyl](https://github.com/gulpjs/vinyl "vinyl")オブジェクトのデータをプラグイン同士でやり取りすることで入力/変換/出力を行い、
218+
そのインタフェースとして既存のNode.js Streamを使っていると言えます。
219+
220+
## どういう用途に向いている?
218221

219-
- [ ] どういう用途に向いている?
220222
- [ ] どういう用途に向いていない?
221-
- [ ] この仕組みを使っているもの
222-
- [ ] 実装してみよう
223-
- [ ] エコシステム
223+
224+
## エコシステム
225+
226+
gulpのプラグインが行う処理は「入力に対して出力を返す」が主となっています。
227+
この受け渡すデータとして[vinyl](https://github.com/gulpjs/vinyl "vinyl")オブジェクトを使い、受け渡すAPIのインターフェースとしてNode.js Streamを使っています。
228+
229+
gulpではプラグインは単機能であること推奨しています。
230+
231+
> Your plugin should only do one thing, and do it well.
232+
> -- [gulp/guidelines.md](https://github.com/gulpjs/gulp/blob/master/docs/writing-a-plugin/guidelines.md "gulp/guidelines.md at master · gulpjs/gulp")
233+
234+
一つのプラグインで複数の処理をすることは可能ですが、Node.js Streamに乗ることでこの事を解決しています。
235+
236+
元々、Transform Streamは一つの処理を行うことに向いていて、`pipe`を繋げることで複数の処理を行うため、
237+
gulpは既存のNode.js Streamに乗ることで独自のAPIを使わずに解決しています。
238+
239+
また、gulpはタスク自動化ツールであるため、既存のライブラリをそのままタスクとして使いやすくすることが重要だと言えます。
240+
Node.js Streamのデフォルトでは流れるデータが`Buffer`であるため、そのままでは既存のライブラリでは扱いにくい問題を
241+
データとして[vinyl](https://github.com/gulpjs/vinyl "vinyl")オブジェクトを流す事で緩和しています。
242+
243+
このようにして、gulpはタスクに必要な単機能のプラグインを既存のライブラリを使って作りやすくしています。
244+
これにより再利用できるプラグインが多くできることでエコシステムを構築していると言えます。

0 commit comments

Comments
 (0)