1. ホーム
  2. arrays

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

2023-01-29 15:13:52

質問

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' ]

しかし、なぜでしょうか?グロビングの動作に何か関係があるのでしょうか?ググってみましたが、わかりません。

これはグロビングの意図した目的ではないかもしれませんが、このように動作することが私には理解できません。どなたか教えていただけませんか?

どのように解決するのですか?

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

しかし、簡単な解決策があります。 キーを持つオブジェクトを渡して base を第二引数として gulp.src を指定すると、すべてが正しい相対パスになります。

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(...);