gulp - gulp 合并流没有 add() 函数?
问题描述
我有一个奇怪的,星期五迟到的gulp
merge-stream
问题。我被告知:
TypeError: merge.add is not a function
包.json:
{
"name": "myProject",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"bootstrap": "^4.3.1",
"bootstrap-datepicker": "^1.8.0",
"jquery": "^3.4.0",
"jquery-validation": "^1.19.0",
"jquery-validation-unobtrusive": "^3.2.11",
"moment": "^2.24.0",
"popper.js": "^1.15.0",
"spectrum-colorpicker": "^1.8.0",
"spin.js": "^4.0.0"
},
"devDependencies": {
"gulp": "^4.0.0",
"gulp-clean": "^0.4.0",
"gulp-cli": "^2.1.0",
"merge-stream": "^1.0.1"
}
}
gulpfile.js:
var gulp = require("gulp");
var gclean = require("gulp-clean");
var paths = {
node: "./node_modules/",
lib: "./wwwroot/lib/"
};
var packages = {
"bootstrap": {
src: paths.node + "bootstrap/dist/**",
dest: paths.lib + "bootstrap"
},
"bootstrap-datepicker": {
src: paths.node + "bootstrap-datepicker/dist/**",
dest: paths.lib + "bootstrap-datepicker"
},
"jquery": {
src: paths.node + "jquery/dist/**",
dest: paths.lib + "jquery"
},
"jquery-validation": {
src: paths.node + "jquery-validation/dist/**",
dest: paths.lib + "jquery-validation"
},
"jquery-validation-unobtrusive": {
src: paths.node + "jquery-validation-unobtrusive/dist/**",
dest: paths.lib + "jquery-validation-unobtrusive"
},
"moment": {
src: paths.node + "moment/min/**",
dest: paths.lib + "moment"
},
"popper.js": {
src: paths.node + "popper.js/dist/umd/**",
dest: paths.lib + "popper.js"
},
"spectrum-colorpicker": {
src: paths.node + "spectrum-colorpicker/spectrum.*",
dest: paths.lib + "spectrum-colorpicker"
},
"spin.js": {
src: paths.node + "spin.js/spin.*",
dest: paths.lib + "spin.js"
}
};
function clean() {
return gulp.src(paths.lib + "*", { read: false })
.pipe(gclean());
}
function build() {
const merge = require("merge-stream");
for (let item in packages) {
if (packages.hasOwnProperty(item)) {
console.log(item);
console.dir(packages[item]);
merge.add(
gulp.src(packages[item].src)
.pipe(gulp.dest(packages[item].dest))
);
}
}
return merge.isEmpty() ? null : merge;
}
exports.build = build;
exports.clean = clean;
exports.default = gulp.series(clean, build);
命令行结果是:
> gulp
[16:32:04] Using gulpfile H:\Projects\My Projects\myProject\myProject\gulpfile.js
[16:32:04] Starting 'default'...
[16:32:04] Starting 'clean'...
[16:32:04] Finished 'clean' after 15 ms
[16:32:04] Starting 'build'...
bootstrap
{ src: './node_modules/bootstrap/dist/**',
dest: './wwwroot/lib/bootstrap' }
[16:32:04] 'build' errored after 16 ms
[16:32:04] TypeError: merge.add is not a function
at build (H:\Projects\My Projects\myProject\myProject\gulpfile.js:61:19)
at bound (domain.js:395:14)
at runBound (domain.js:408:12)
at asyncRunner (H:\Projects\My Projects\myProject\myProject\node_modules\async-done\index.js:55:18)
at process._tickCallback (internal/process/next_tick.js:61:11)
[16:32:04] 'default' errored after 43 ms
它必须是一些简单的东西,我只是太累了,看不到。想法?
解决方案
改变
const merge = require("merge-stream");
至
const merge = require("merge-stream")();
推荐阅读
- spring-hateoas - 了解 Spring HATEOAS 错误:嵌入式包装器为静态 rel 和 rel 目标类型返回 null
- python - BeautifulSoup 获取 href
- javascript - 链 observables 但监听第二个 observable 变化
- javascript - 为什么javascript验证不能正常工作?
- c# - 如何在循环中使用相同的变量在循环中添加变量(如果可能)
- javascript - 使用 Javascript (node.js) 中的键过滤对象数组
- sql-server - 将 XML 子节点插入 SQL 表
- ios - iOS 通过使用 Alamofire 生成 XML
- javascript - 在 tensorflowjs 中组合多个输出
- c# - 如何从 C# 代码正确使用 Scoped 服务