微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 为什么gulp抱怨超过最大调用堆栈大小?

我正在写一个gulp任务,我拿几个js文件,连接它们,缩小那些..与scss一样进入css等…正常的东西

而且,它适用于Drupal 8

这是我的gulpfile.但是在运行时,我不断收到以下错误

[10:00:58] Starting 'scripts'...

events.js:160
      throw er; // Unhandled 'error' event
      ^
RangeError: Maximum call stack size exceeded
    at Object.TreeWalker._visit (eval at <anonymous> (/Applications/MAMP/htdocs/novaent/node_modules/uglify-js/tools/node.js:1:0),<anonymous>:1255:21)
'use strict';

以下是我的gulp文件

// Include gulp.
var gulp = require('gulp');
var browserSync = require('browser-sync').create();
var config = require('./config.json');

// Include plugins.
var sass = require('gulp-sass');
var imagemin = require('gulp-imagemin');
var pngcrush = require('imagemin-pngcrush');
var shell = require('gulp-shell');
var plumber = require('gulp-plumber');
var notify = require('gulp-notify');
var autoprefix = require('gulp-autoprefixer');
var glob = require('gulp-sass-glob');
var uglify = require('gulp-uglify');
var concat = require('gulp-concat');
var rename = require('gulp-rename');
var sourcemaps = require('gulp-sourcemaps');


// sassOptions are optional but things like sourceComments (line_comments) can be pretty handy.
var sassOptions = {
  errLogToConsole: true,outputStyle: 'compressed',sourceComments: 'line_comments',includePaths: config.css.includePaths
};


// CSS.
gulp.task('css',function() {
  return gulp.src(config.css.src)
    .pipe(glob())
    .pipe(plumber({
      errorHandler: function (error) {
        notify.onError({
          title: 'Gulp',subtitle: 'Failure!',message: 'Error: <%= error.message %>',sound: 'Beep'
        })(error);
        this.emit('end');
      }}))
    .pipe(sourcemaps.init())
    .pipe(sass(sassOptions).on('error',sass.logError))
    .pipe(autoprefix('last 2 versions','> 1%','ie 9','ie 10'))
    .pipe(sourcemaps.write('./maps'))
    .pipe(gulp.dest(config.css.dest))
    .pipe(browserSync.reload({stream: true,injectChanges: true,match: '**/*.css'}));
});

// Compress images.
gulp.task('images',function () {
  return gulp.src(config.images.src)
    .pipe(imagemin({
      progressive: true,svgoPlugins: [{removeViewBox: false}],use: [pngcrush()]
    }))
    .pipe(gulp.dest(config.images.dest));
});

// Fonts.
gulp.task('fonts',function() {
  return gulp.src(config.fonts.src)
    .pipe(gulp.dest(config.fonts.dest));
});

// javaScripts
gulp.task('scripts',function() {
  return gulp.src(config.js.src)
    .pipe(concat('index.js'))
    .pipe(gulp.dest(config.js.dest)) // outputs *.js without min
    .pipe(rename({suffix: '.min'}))
    .pipe(uglify())
    .pipe(gulp.dest(config.js.dest)) // outputs *.js.min
    .pipe(notify({message: 'Rebuild all custom scripts'}));
});

// Watch task.
gulp.task('watch',function () {
  gulp.watch(config.css.src,['css']);
  gulp.watch(config.fonts.src,['fonts']);
  gulp.watch(config.js.src,['scripts']);
  gulp.watch(config.images.src,['images']);
});

// Static Server + Watch
gulp.task('serve',['css','fonts','watch'],function () {
  browserSync.init({
    proxy: config.proxy
  });
});

// Run drush to clear the theme registry.
gulp.task('drush',shell.task([
  'drush cache-clear theme-registry'
]));

// Default Task
gulp.task('default',['serve']);

解决方法

我想我已经解决了以下问题

'use strict';

// Include gulp.
var gulp = require('gulp');
var browserSync = require('browser-sync').create();
var config = require('./config.json');

// Include plugins.
var sass = require('gulp-sass');
var imagemin = require('gulp-imagemin');
var pngcrush = require('imagemin-pngcrush');
var shell = require('gulp-shell');
var plumber = require('gulp-plumber');
var notify = require('gulp-notify');
var autoprefix = require('gulp-autoprefixer');
var glob = require('gulp-sass-glob');
var uglify = require('gulp-uglify');
var concat = require('gulp-concat');
var rename = require('gulp-rename');
var sourcemaps = require('gulp-sourcemaps');


var sassOptions = {
  errLogToConsole: true,includePaths: config.css.includePaths
};


var uglifyOptions = {
  preserveComments: 'license',warnings: 'true'
};

// CSS.
gulp.task('css',function() {
  return gulp.src(config.fonts.src)
    .pipe(gulp.dest(config.fonts.dest));
});


// Concat all js files into one index.min.js file
gulp.task('scripts',function() {
  return gulp.src(config.js.src)
    .pipe(concat('./js/index.js'))
    .pipe(gulp.dest('./js/'))
    .pipe(rename({suffix: '.min'}))
    .pipe(uglify(uglifyOptions))
    .pipe(gulp.dest('./assets/dist/'))
    .pipe(notify({message: 'Rebuild all custom scripts. Please refresh your browser'}));
});

// Watch task.
gulp.task('watch','scripts',['serve']);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐