generator-polymer-init-custom-build
generator-polymer-init-custom-build copied to clipboard
pipe(project.analyzer) throws error TypeError: dest.on is not a function
I can't figure out why this section of my code is throwing a Type error. The project gulp file looks like
const path = require('path');
const gulp = require('gulp');
const polymer = require('polymer-build');
const mergeStream = require('merge-stream');
const PolymerProject = require('polymer-build').PolymerProject;
const srcHtmlSplitter = polymer.HtmlSplitter;
const polymerJSON = require(global.config.polymerJsonPath);
const project = new PolymerProject(polymerJSON);
const bundledPath = path.join(global.config.build.rootDirectory, global.config.build.bundledDirectory);
const unbundledPath = path.join(global.config.build.rootDirectory, global.config.build.unbundledDirectory);
const sourcesSplitter = new srcHtmlSplitter();
const depSplitter = new srcHtmlSplitter();
function splitSource() {
return project.sources().pipe(sourcesSplitter.split());
}
function splitDependencies() {
return project.dependencies().pipe(depSplitter.split());
}
function rejoin() {
return sourcesSplitter.rejoin();
}
function merge(source, dependencies) {
const mergedFiles = mergeStream(source(), dependencies())
.pipe(project.analyzer.analyzer);
const bundleType = global.config.build.bundleType;
let outputs = [];
if (bundleType === 'both' || bundleType === 'bundled') {
console.log('both-bundled')
outputs.push(writeBundledOutput(polymer.forkStream(mergedFiles)));
}
if (bundleType === 'both' || bundleType === 'unbundled') {
console.log('unbundled')
outputs.push(writeUnbundledOutput(polymer.forkStream(mergedFiles)));
}
return Promise.all(outputs);
}
function writeBundledOutput(stream) {
return new Promise(resolve => {
stream.pipe(project.bundler)
.pipe(gulp.dest(bundledPath))
.on('end', resolve);
});
}
function writeUnbundledOutput(stream) {
return new Promise(resolve => {
stream.pipe(gulp.dest(unbundledPath))
.on('end', resolve);
});
}
function serviceWorker() {
const bundleType = global.config.build.bundleType;
let workers = [];
if (bundleType === 'both' || bundleType === 'bundled') {
workers.push(writeBundledServiceWorker());
}
if (bundleType === 'both' || bundleType === 'unbundled') {
workers.push(writeUnbundledServiceWorker());
}
return Promise.all(workers);
}
function writeBundledServiceWorker() {
return polymer.addServiceWorker({
project: project,
buildRoot: bundledPath,
swConfig: global.config.swPrecacheConfig,
serviceWorkerPath: global.config.serviceWorkerPath,
bundled: true
});
}
function writeUnbundledServiceWorker() {
return polymer.addServiceWorker({
project: project,
buildRoot: unbundledPath,
swConfig: global.config.swPrecacheConfig,
serviceWorkerPath: global.config.serviceWorkerPath
});
}
module.exports = {
splitSource: splitSource,
splitDependencies: splitDependencies,
rejoin: rejoin,
merge: merge,
serviceWorker: serviceWorker
};
and when I try to run gulp file that uses this file, I get this
/node_modules/readable-stream/lib/_stream_readable.js:494
dest.on('unpipe', onunpipe);
^
TypeError: dest.on is not a function
at PassThrough.Readable.pipe (/Users/marko/Documents/projects/etools-infra/dashboard/node_modules/readable-stream/lib/_stream_readable.js:494:8)
at Object.merge (/Users/marko/Documents/projects/etools-infra/dashboard/gulp-tasks/project.js:60:8)
at Object.<anonymous> (/Users/marko/Documents/projects/etools-infra/dashboard/gulpfile.js:127:11)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
Ive seen the merge used this way in various other gulp files in polymer libs without problem so I can't figure out why this is happening here.