このスクリプトは gulp 4.0.0-alpha.2 を使用していますが、このスクリプトはもともと 3.x 用に作成されたものではないかと思います。
次のタスクが存在する、継承した gulp スクリプトがあります。
pump([
gulp.src(['app\\images\\**\\*.*']),
gulp.dest('.dev\\images')
] , done);
(渡された値は.src
、.dest
もともと他の場所から取得されたものですが、それらを変更するコードはないようです)
app\images
フォルダーには、複数のicons
ファイルを含むサブフォルダーが含まれています。gulp スクリプトの結果は次のとおりです。
- では、これら
4.0.0-alpha.2
のファイルは次の場所に配置されます.dev\images\icons
- では、これら
4.0.2
のファイルのペースが調整されます.dev\images\app\images\icons
以前はグロブからの相対パスのみだったのに対し、現在は 2 つのフル パスが連結されているようです (つまり、app\images\**\*.*
見つかっapp\images\icons\icon1.png
たときに が返されicons\icon1.png
ます)。
base
呼び出し時にオプションに渡すと、src
これが解決されるようです。
pump([
gulp.src(['app\\images\\**\\*.*'], { base: 'app\\images\\' }),
gulp.dest('.dev\\images\\')
] , done);
これは、異なるベースパスを持つパスの配列が渡されるケースを解決しません。例えば:
['app\\styles\brand\**\*.*', 'app\\brands\icons\icons.data.svg.css']
また、 のすべての呼び出しを更新する必要がない、より一般的なソリューションが利用可能であるように思われるsrc
ので....
宛先への書き込み時にグロブのみ、またはファイルの名前が使用される Gulp 4.0 を使用して同じ動作を取得するにはどうすればよいですか?
最小限の再現gulpfile.js
:
'use strict';
const gulp = require('gulp');
exports.build = function()
{
return gulp.src(['app\\images\\**\\*.*'])
.pipe(gulp.dest('.dev\\images'));
}
そしてpackage.json
:
{
"name": "test-web",
"version": "1.0.0",
"description": "Test Project",
"main": "gulpfile.js",
"scripts": {
"build": "gulp build"
},
"author": "Me",
"license": "ISC",
"devDependencies": {
"gulp": "^4.0.2"
}
}
app\images\android
との下にファイルがありますapp\images\apple
(それぞれに 2 つ)
gulp@4.0.0-alpha.2
(予想/望ましい) の結果:
- .dev\images\android\1.png
- .dev\images\android\2.png
- .dev\images\apple\1.png
- .dev\images\apple\2.png
結果gulp@v4.0.2
(予期しない):
- .dev\images\app\images\android\1.png
- .dev\images\app\images\android\2.png
- .dev\images\app\images\apple\1.png
- .dev\images\app\images\apple\2.png