@Black_Fire

Можно ли в gulpfile настроить, чтобы при малейшей ошибке js не крашился dev сервер?

Достаточно небольшой ошибки в js и в консоли ошибка, приходится заново стартовать проект. В тоже время, в файлах стилей ошибки не приводят к необходимости рестартовать, просто ошибки в консоли. Код обработки javascript:
function scripts() {
	return src(['app/js/*.js', '!app/js/*.min.js'])
		.pipe(webpackStream({
			mode: 'production',
			performance: { hints: false },
			plugins: [
				new webpack.ProvidePlugin({ $: 'jquery', jQuery: 'jquery', 'window.jQuery': 'jquery' }), // jQuery (npm i jquery)
			],
			module: {
				rules: [
					{
						test: /\.m?js$/,
						exclude: /(node_modules)/,
						use: {
							loader: 'babel-loader',
							options: {
								presets: ['@babel/preset-env'],
								plugins: ['babel-plugin-root-import']
							}
						}
					}
				]
			},
			optimization: {
				minimize: true,
				minimizer: [
					new TerserPlugin({
						terserOptions: { format: { comments: false } },
						extractComments: false
					})
				]
			},
		}, webpack)).on('error', function handleError() {
			this.emit('end')
		})
		.pipe(concat('app.min.js'))
		.pipe(dest('app/js'))
		.pipe(browserSync.stream())
}
  • Вопрос задан
  • 40 просмотров
Пригласить эксперта
Ответы на вопрос 2
black1277
@black1277
Вольный стрелок
есть такой плагин gulp-plumber, как раз для этого
const  plumber = require('gulp-plumber');

function html() {
  return src(path.src.html, {base: 'src/'})
    .pipe(plumber())
    .pipe(pug({pretty: true}))
    .pipe(dest(path.build.html))
    .pipe(browsersync.stream())
}

вставляете первым пайпом в каждую цепочку процессов и всё будет работать
Ответ написан
@joseffie
Front-end developer
Установите gulp-plumber. Он будет обрабатывать ошибки и не давать Галпу прерывать сервер.

Просто вставьте его в начале таска пайпом:
import plumber from 'gulp-plumber';
// or
// const plumber = require('gulp-plumber');

function scripts() {
  return src(['app/js/*.js', '!app/js/*.min.js'])
    .pipe(plumber())
    .pipe(webpackStream({
      mode: 'production',
      performance: { hints: false },
      plugins: [
        new webpack.ProvidePlugin({ $: 'jquery', jQuery: 'jquery', 'window.jQuery': 'jquery' }), // jQuery (npm i jquery)
      ],
      module: {
        rules: [
          {
            test: /\.m?js$/,
            exclude: /(node_modules)/,
            use: {
              loader: 'babel-loader',
              options: {
                presets: ['@babel/preset-env'],
                plugins: ['babel-plugin-root-import']
              }
            }
          }
        ]
      },
      optimization: {
        minimize: true,
        minimizer: [
          new TerserPlugin({
            terserOptions: { format: { comments: false } },
            extractComments: false
          })
        ]
      },
    }, webpack)).on('error', function handleError() {
      this.emit('end')
    })
    .pipe(concat('app.min.js'))
    .pipe(dest('app/js'))
    .pipe(browserSync.stream())
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы