虽然此脚本使用 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
看起来这两个完整路径现在被连接起来,而以前只有来自 glob 的相对路径(即当app\images\**\*.*
找到app\images\icons\icon1.png
它时返回icons\icon1.png
)。
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 获得相同的行为,其中只有 glob 或文件名在写入目标时使用?
最小复制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