Gulp. Ошибка RangeError: Maximum call stack size exceeded при добавлении нового кода
Есть проект, полагаю имеет смысл сказать в контексте проблемы, что работаю над действительно большим сайтом. Сборка работала корректно до определенного момента - просто добавил новый элемент (алерт об ошибке) в одну из подключаемых форм, и все - вылазит постоянно это:
Причем, если закомментировать часть кода любого из подключаемых на странице компонентов, сборка вновь корректно работает.
Для подключения компонентов использую gulp-rigger. Возможно ли устранить проблему? Если нет - посоветуйте пожалуйста альтернативы плагину, без таких сюрпризов.
Конфиг прилагаю.
var gulp = require('gulp'),
plumber = require('gulp-plumber'),
sass = require('gulp-sass'),
prefixer = require('gulp-autoprefixer'),
cssnano = require('gulp-cssnano'),
terser = require('gulp-terser'),
imagemin = require('gulp-imagemin'),
pngquant = require('imagemin-pngquant'),
sourcemaps = require('gulp-sourcemaps'),
browser = require('browser-sync'),
rigger = require('gulp-rigger'),
strip = require('gulp-strip-comments'),
rimraf = require('rimraf'),
bytediff = require('gulp-bytediff'),
cssimport = require('gulp-cssimport'),
svgSprite = require('gulp-svg-sprite'), // create svgSprite
svgMin = require('gulp-svgmin'), // svg minification
cheerio = require('gulp-cheerio'), // removal of unnecessary attributes from svg
replace = require('gulp-replace'), // fix bugs, thats make cheerio plugin
cache = require('gulp-cache'), // for cache build images and other
runSequence = require('gulp4-run-sequence'),
reload = browser.reload;
/* HTML generation */
gulp.task('html', function (done) {
gulp.src("src/*.html")
.pipe(rigger())
.pipe(strip())
.pipe(gulp.dest("gulp_dist"))
.pipe(reload({
stream: true
}));
done();
});
/* CSS build [PROD] */
gulp.task('sassProd', async function (done) {
return gulp.src('./src/sass/main.scss')
.pipe(plumber())
.pipe(sass.sync().on('error', sass.logError))
.pipe(cssimport())
.pipe(prefixer())
.pipe(bytediff.start())
.pipe(cssnano())
// .pipe(bytediff.stop())
.pipe(gulp.dest('gulp_dist/style'))
.pipe(reload({
stream: true
}));
done();
});
/* CSS build [DEV] */
gulp.task('sassDev', async function (done) {
return gulp.src('./src/sass/main.scss')
.pipe(plumber())
// .pipe(sourcemaps.init())
.pipe(sass.sync().on('error', sass.logError))
.pipe(cssimport())
.pipe(prefixer())
// .pipe(sourcemaps.write('./maps'))
.pipe(gulp.dest('gulp_dist/style'))
.pipe(reload({
stream: true
}));
done();
});
/* js build [PROD] */
gulp.task('jsProd', function (done) {
gulp.src('./src/js/main.js')
.pipe(rigger())
.pipe(bytediff.start())
.pipe(terser())
// .pipe(bytediff.stop())
.pipe(gulp.dest('gulp_dist/js'))
.pipe(reload({stream: true}));
done();
});
/* js build [DEV] */
gulp.task('jsDev', function (done) {
gulp.src('./src/js/main.js')
.pipe(rigger())
.pipe(sourcemaps.init())
.pipe(sourcemaps.write('./maps'))
.pipe(gulp.dest('gulp_dist/js'))
.pipe(reload({stream: true}));
done();
});
/* images generation [PROD] */
gulp.task('imageProd', function (done) {
gulp.src("src/images/**/*.*")
.pipe(cache(imagemin([
imagemin.gifsicle({interlaced: true}),
imagemin.jpegtran({progressive: true}),
imagemin.optipng({optimizationLevel: 5}),
imagemin.svgo({
plugins: [
{removeViewBox: false},
{cleanupIDs: false}
]
})
])))
.pipe(gulp.dest("gulp_dist/images"))
.pipe(reload({stream: true}));
done();
});
/* images generation [DEV] */
gulp.task('imageDev', function (done) {
gulp.src("src/images/**/*.*")
.pipe(cache(imagemin()))
.pipe(gulp.dest("gulp_dist/images"))
.pipe(reload({stream: true}));
done();
});
/* svg-sprite generation */
gulp.task('svgSprite', function(done) {
gulp.src('src/svgsprite/*.svg')
// minify svg files
// .pipe(svgMin({
// js2svg: {
// pretty: true
// }
// }))
// removal all attributes in svg shapes
.pipe(cheerio({
run: function($) {
$('[class]').removeAttr('class');
$('[xmlns]').removeAttr('xmlns');
$('[fill]').removeAttr('fill');
$('[stroke]').removeAttr('stroke');
$('[style]').removeAttr('style');
},
parseOptions: {
xmlMode: true
}
}))
// delete unnecessary string made by cheerio plugin with replace
.pipe(replace('>', '>'))
// make svgSprite
.pipe(svgSprite({
mode: {
symbol: {
sprite: "../svgdefs.svg",
}
}
}))
.pipe(gulp.dest('gulp_dist/images'));
done();
});
/* fonts generation */
gulp.task('fonts', function(done) {
gulp.src("src/fonts/**/*.*")
.pipe(gulp.dest("gulp_dist/fonts"));
done();
});
/* clean dist folder */
gulp.task('clean', function (cb) {
rimraf('gulp_dist', cb);
});
/* BrowserSync serve task */
gulp.task('serve', function(done) {
browser({
port: 4500,
open: true,
ghostMode: false,
server: {
baseDir: 'gulp_dist'
},
tunnel: 'allso-uz'
});
done();
});
/* Watch task [PROD] */
gulp.task('watchProd', function(done) {
gulp.watch("src/sass/**/*.scss", gulp.series('sassProd'));
gulp.watch("src/**/*.html", gulp.series('html'));
gulp.watch("src/js/**/*.js", gulp.series('jsProd'));
gulp.watch("src/images/**/*.*", gulp.series('imageProd'));
gulp.watch("src/fonts/**/*.*", gulp.series('fonts'));
gulp.watch("src/svgsprite/*.svg", gulp.series('svgSprite'));
done();
});
/* Watch task */
gulp.task('watchDev', function(done) {
gulp.watch("src/sass/**/*.scss", gulp.series('sassDev'));
gulp.watch("src/**/*.html", gulp.series('html'));
gulp.watch("src/js/**/*.js", gulp.series('jsDev'));
gulp.watch("src/images/**/*.*", gulp.series('imageDev'));
gulp.watch("src/fonts/**/*.*", gulp.series('fonts'));
gulp.watch("src/svgsprite/*.svg", gulp.series('svgSprite'));
done();
});
/* Default task PROD */
gulp.task('prod', function(done) {
runSequence('clean', gulp.series(gulp.parallel('html', 'sassProd', 'jsProd', 'imageProd', 'svgSprite'), 'watchProd', 'serve'), done);
});
/* Default task DEV */
gulp.task('dev', gulp.series('html', 'sassDev', 'jsDev', 'imageDev', 'svgSprite', 'watchDev', 'serve'));
