Ошибка: парсеры не зарегистрированы для: "] a (r)" после обновления до Gulp v4 - PullRequest
1 голос
/ 31 января 2020

Итак, после недавней чистой установки на мой 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
});

1 Ответ

0 голосов
/ 10 апреля 2020

У меня была такая же проблема. Все еще не уверен на 100%, что вызвало это.

Это было из задачи Watch, которая просматривала файлы в нашей версии Pattern Lab для Twig. Он нашел несколько JS и S CSS файлов, которые вызывали его разрыв. Мое предположение было бы странно отформатированным именем файла.

...