2016-08-25 11 views
4

私はgulpソースコードについて学び、gulpプラグインを作成しようとしました。gulpによって放出されたvinylファイルのvinyl.isVinyl()がfalseを返すのはなぜですか?

今、私は何かについて混乱しています。

これは、以下の私のプラグインのコードです:

module.exports = function(){ 
    return through2.obj(function(file,encode,callback){ 
     console.log(vinyl.isVinyl(file));//false 
     console.log(file._isVinyl) // undefined 

     // the reason ? file is not Object of vinyl ? file's property of '_isVinyl' is undefine ? 

     if(file.isNull()){ 
      callback(null,file); 
     } 
     if(file.isStream()){ 
      file.contents = file.contents.pipe(through2(function(chuck,encode,callback){ 
       if(util.isNull(chuck)){ 
        callback(null, chuck); 
       } 
       if(util.isBuffer(chuck)){ 
        chuck = new Buffer(String(chuck) 
         .replace(commentReg, '') 
         .replace(blankSpaceReg,'')) 
       } 
       callback(null,chuck); 
      })); 
     } 
     if(file.isBuffer()){ 
      file.contents = new Buffer(String(file.contents) 
       .replace(commentReg, '') 
       .replace(blankSpaceReg,'')); 
     } 
     callback(null,file); 
    }) 
} 

これはvinylファイルが作成されて一気のソースコードの一部です:

https://github.com/gulpjs/vinyl-fs/blob/master/lib/src/wrap-with-vinyl-file.js

MY CONFUSION:

transformFunctionに登録済みthough2.obj()vinylファイルであるfileオブジェクトを受け取ります。

なぜですかvinyl.isVinyl()返信false

fileオブジェクトにはなぜ_isVinylプロパティがありません。

答えて

4

これはGitHubの上を見て、どのvinyl-fsvinylのバージョンをお使いのローカルgulpインストールが使用しているvinylvinyl-fsのバージョンの問題であり、。

あなたは、おそらく次のように入力してnpmjs.comからがぶ飲みをインストール:

$ npm install --save-dev gulp 

これは、現在、一気のバージョン3.9.1をインストールします。 vinyl-fsvinylのバージョンは、npm lsを使用して、01254のバージョンを確認することができます。

└─┬ [email protected] 
    └─┬ [email protected] 
    └─┬ [email protected] 

ので[email protected][email protected]に依存し、[email protected][email protected]によって異なります。ここではそのコマンドから(省略)出力です。あなたはGitHubの[email protected]上で見ることができるように._isVinyl性質を持っていません

https://github.com/gulpjs/vinyl-fs/tree/v0.3.14
https://github.com/gulpjs/vinyl/tree/v0.4.6

:ここ

はGitHubの上のものバージョンへのリンクです。 [email protected]have this propertyのような新しいバージョンのみ。

[email protected][email protected]を使用してビニルファイルを出力するので、gulpのインストールによって放出されるビニルファイルには._isVinylプロパティはありません。そのため、あなたの例ではvinyl.isVinyl()関数がfalseを返します。

現在のdevelopment version for the upcoming gulp 4.0[email protected]を使用しています。 install that version of gulpの場合、vinyl.isVinyl()コールはtrueを返します。

関連する問題