web-dev-qa-db-ja.com

gulp.srcがファイルへの完全なパスの配列を渡されるのを好まないのはなぜですか?

Gulp.srcに、処理したいファイルの配列を渡そうとしています。これは、そのままの配列です。

['bower_components/jquery/jquery.js',
 'bower_components/superscrollorama/js/greensock/TweenMax.min.js',
 'bower_components/superscrollorama/jquery.superscrollorama.js' ]

Gulp.srcはそれを好まないようで、3番目の要素は最終目的地に到達しません。

次のようなワイルドカード文字を導入すると、すべてが正常に機能することがわかりました。

['bower_components/**/jquery.js',
 'bower_components/**/js/greensock/TweenMax.min.js',
 'bower_components/**/jquery.superscrollorama.js' ]

しかし、なぜ?グロビングが機能する方法と関係がありますか?私はグーグルで調べましたが、見つけられません。

たぶん、これはグロビングの意図された目的ではないかもしれませんが、それがこのように働くべきであると私には意味がありません。誰でも光を当てることができますか?

93
morganesque

フルパスの配列を渡すと、各ファイルは個別に処理されます。グロビングは、パスのルートがどこにあるかを知りません(実際、最初のグロブに基づいて推測します)。したがって、各ファイルは含まれるフォルダーをルートとし、相対パスは空です。

ただし、簡単な解決策があります。キーbasegulp.srcの2番目の引数としてオブジェクトに渡すと、すべてが正しい相対パスになります。

return gulp.src(['bower_components/jquery/jquery.js',
                'bower_components/superscrollorama/js/greensock/TweenMax.min.js',
                'bower_components/superscrollorama/jquery.superscrollorama.js' ],
            {base: 'bower_components/'})
        .pipe(...);
160
OverZealous