私は Gulp を使用して複数の SVG ファイルを SVG ストレージに保存しています。これらのファイルは、後でパフォーマンスを最大化するために再利用されます。ただし、パスに交換可能な固定部分と動的部分が含まれる、かなり興味深いフォルダー構造を使用しています。
説明しましょう。これが私が使用しているフォルダー構造です。フォルダーには、などの名前のapp/images/products
フォルダーが含まれています。このフォルダーには、単一のファイルに結合して に保存する準備ができている SVG ファイルでいっぱいのサブフォルダーが含まれています。productA
productB
color-sprites
build/images/products/{product name}/color-sprites.svg
root/
|_ gulpfile.js
|_ app
|_ images
|_ products
|_ **productA**
|_ color-sprites
|_ sprite1.svg
|_ sprite2.svg
|_ ...
|_ build
|_ images
|_ products
|_ **productA**
|_ color-sprites.svg
これは、必要なことを達成するために使用しようとしているコードの簡略化されたバージョンです (rename
のインスタンスであることに注意してくださいgulp-rename
)。
gulp.task('svg-color-sprites', function () {
return gulp.src('app/images/products/**/color-sprites/*.+(svg)')
.pipe(svgMin())
.pipe(svgStore())
.pipe(rename(...))
.pipe(gulp.dest('build/images/'));
});
問題は、ターゲットを構築するために現在のストリームパラメーターにアクセスする方法が正確にわからないことです。このようgulp-rename
に実行するgulpfile.js
と、パスの最初の親要素が前に取得される*
か**
、再び in というファイルが作成されるためproducts.svg
ですbuild/images/
。ベース名、相対パスなどにアクセスするために使用する例をいくつか見てきましたpath
が、gulp ストリームのコンテキストでそれを使用する方法がわかりません。