Итак, после недавней чистой установки на мой Ma c (поэтому я полагаю, что это может быть связано не с Gulp 4), у меня возникли проблемы с заданиями Gulp.
По пути я столкнулся с несколькими ошибками и смог исправить некоторые из них, но я застрял на этом. Это полная ошибка:
Error: no parsers registered for: "]a(r)"
at parse (/node_modules/snapdragon/lib/parser.js:473:15)
at Parser.parse (/node_modules/snapdragon/lib/parser.js:477:24)
at Snapdragon.parse (/node_modules/snapdragon/index.js:122:28)
at Snapdragon.<anonymous> (/node_modules/braces/lib/braces.js:40:45)
at Braces.parse (/node_modules/braces/lib/braces.js:66:26)
at Braces.expand (/node_modules/braces/lib/braces.js:87:18)
at create (/node_modules/braces/index.js:142:15)
at memoize (/node_modules/braces/index.js:298:13)
at Function.braces.create (/node_modules/braces/index.js:165:10)
at Function.braces.expand (/node_modules/braces/index.js:81:17)
Похоже, ошибка в Google подсказывает, что она может быть связана с browser-sync
, который я не использую. Но я прокомментировал любые ссылки на live-reload
на случай, если это как-то связано с этим, но все равно получаю ту же ошибку.
Попутно пытаясь исправить различные проблемы, я запустил следующее :
$ npm install --global gulp-cli
$ npm rm gulp
$ npm install gulp
$ npm rebuild node-sass
$ npm outdated
$ npm install -g npm-check-updates
$ ncu -u
$ npm update
$ npm install
Версии
- Gulp CLI 2.2.0
- Gulp Local 4.0.2
- Узел 13.7 .0
- npm / npx 6.13.7
Gulpfile. js
"use strict";
// package vars
const pkg = require("./package.json");
// gulp
const gulp = require("gulp");
// load all plugins in "devDependencies" into the variable $
const $ = require("gulp-load-plugins")({
pattern: ["*"],
scope: ["devDependencies"]
});
// scss - build the scss to the build folder, including the required paths, and writing out a sourcemap
gulp.task("scss", () => {
$.fancyLog("-> Compiling scss");
return gulp.src(pkg.paths.src.scss + '*.scss')
.pipe($.plumber({errorHandler: onError}))
.pipe($.sourcemaps.init({loadMaps: true}))
.pipe($.sass({
includePaths: pkg.paths.scss
})
.on("error", $.sass.logError))
.pipe($.cached("sass_compile"))
.pipe($.autoprefixer())
.pipe($.size({gzip: true, showFiles: true}))
.pipe(gulp.dest(pkg.paths.build.css));
});
// tailwind task - build the Tailwind CSS
gulp.task("tailwind", () => {
$.fancyLog("-> Compiling tailwind css");
return gulp.src(pkg.paths.build.css + '**/*.css')
.pipe($.postcss([
$.tailwindcss(pkg.paths.tailwindcss.conf),
require("autoprefixer"),
]))
.pipe($.if(process.env.NODE_ENV === "production",
$.purgecss({
extractors: [{
extractor: TailwindExtractor,
extensions: ["twig", "scss", "css", "js"]
}],
whitelist: pkg.globs.purgecssWhitelist,
content: pkg.globs.purgecss
})
))
.pipe(gulp.dest(pkg.paths.build.css));
});
// Custom PurgeCSS extractor for Tailwind that allows special characters in
// class names.
//
// https://github.com/FullHuman/purgecss#extractor
class TailwindExtractor {
static extract(content) {
return content.match(/[A-z0-9-:\/]+/g);
}
}
// css task - combine & minimize any distribution CSS into the public css folder, and add our banner to it
gulp.task("css", gulp.series("tailwind", "scss"), () => {
$.fancyLog("-> Building css");
return gulp.src(pkg.paths.build.css + '**/*.css')
.pipe($.plumber({errorHandler: onError}))
.pipe($.newer({dest: pkg.paths.dist.css}))
.pipe($.print())
.pipe($.sourcemaps.init({loadMaps: true}))
.pipe($.if(process.env.NODE_ENV === "production",
$.cssnano({
discardComments: {
removeAll: true
},
discardDuplicates: true,
discardEmpty: true,
minifyFontValues: true,
minifySelectors: true
})
))
.pipe($.header(banner, {pkg: pkg}))
.pipe($.sourcemaps.write("./"))
.pipe($.size({gzip: true, showFiles: true}))
.pipe(gulp.dest(pkg.paths.dist.css))
.pipe($.filter("**/*.css"))
//.pipe($.livereload());
});
// set the node environment to development
gulp.task("set-dev-node-env", async function() {
$.fancyLog("-> Setting NODE_ENV to development");
return process.env.NODE_ENV = "development";
});
// Default task
gulp.task("default", () => {
gulp.series("set-dev-node-env");
// $.fancyLog("-> Livereload listening for changes");
// $.livereload.listen();
gulp.watch(pkg.paths.src.scss + "**/*.scss", gulp.series("css"));
gulp.watch(pkg.paths.src.css + "**/*.css", gulp.series("css"));
gulp.watch(pkg.paths.templates + "**/*.{twig}", () => {
gulp.src(pkg.paths.templates)
.pipe($.plumber({errorHandler: onError}))
// .pipe($.livereload());
});
return
});