AssertionError [ERR_ASSERION] Task never defined: server
доходчиво говорит Вам, что таск server
, который Вы используете в gulp.parallel('watch', 'server', 'style')
, неопределён.'browser-sync'
, его Вам и нужно использовать, либо переименовать его в 'server'
.dest.on is not a function
возникает из-за того, что что-то, вызываемое в вашем пайплайне не является потоком..pipe(ttf2woff2)
. Дело в том, что данная функция не вызвана и, соответственно, не возвращает поток..pipe(ttf2woff2)
на .pipe(ttf2woff2())
, и ошибка должна исчезнуть. watching
(или любое другое название, это не играет значения) и присваиваем ей значение false
, затем внутри таска Pug инициализируем плагин emitty
:const emittyPug = emitty.setup('src', 'pug', { makeVinylFile: true })
emittyPugChangedFile
(она будет нужна, чтобы потом присвоить ей необходимое значение в gulp.watch()
). Также не забудьте функции таска Pug указать аргумент-коллбэк (в данном случае done), так как Gulp может жаловаться на отсутствие асинхронного завершения.return new Promise(() => {
emittyPug.scan(global.emittyPugChangedFile).then(() => {
.src()
...
.pipe(gulpif(watch, emittyPug.filter(global.emittyPugChangedFile)))
...
dest()
})
done()
});
serve
присвойте переменной watching
значение true
и напишите следующий gulp.watch()
для Pug:watch(['src/pages/**/*.pug', 'src/components/**/*.pug'], pugHandler).on('all', (event, filepath) => {
global.emittyPugChangedFile = event === 'unlink' ? undefined : filepath;
});
gulp.task('watch', async function() {
gulp.src('./src/precss/**/*.css', ['build']);
});
gulp.task('server', function(done) {
browserSync({
server: {
baseDir: "src"
}
});
gulp.watch("src/*.html").on('change', browserSync.reload);
done();
});
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())
}
import { deleteSync } from 'del'
import del from 'del'
import { deleteSync } from 'del'