Пользовательский экстрактор не работает с Nuxt PurgeCSS

Я работаю с Nuxt.js и использую Nuxt-PurgeCSS: https://github.com/Developmint/nuxt-purgecss

В этом проекте используется мой собственный CSS, аналогичный Tailwind (на основе служебной программы), и у меня есть несколько классов, в которых используется символ @.

Регулярное выражение по умолчанию для этого пакета:

return content.match(/[A-z0-9-:\\/]+/g)

Со следующими классами:

u:w-1/12 u@sm:w-12/12

Он правильно очищает второй, поскольку он не соответствует регулярному выражению для экстрактора.

Я подумал, обновив свою конфигурацию purgeCSS в конфигурации Nuxt до следующего:

purgeCSS: {
    extractors: [
        {
            extractor: class {
                static extract(content) {
                    return content.match(/[@A-Za-z0-9-:/]+/g) || []
                }
            },
            extensions: ['html', 'vue', 'js']
         }
    ]
}

Этот новый экстрактор включает в себя символ @, но по-прежнему очищает имя класса с помощью символа @. Я пробовал следующее регулярное выражение:

return content.match(/[A-Z]+/g) || []

Чтобы увидеть, правильно ли он удаляет все (в качестве теста), но он по-прежнему сохраняет первый класс и очищает второй, даже если он не должен совпадать с каким-либо.

Это наводит меня на мысль, что я неправильно переопределяю экстрактор по умолчанию.

Что-то я здесь делаю не так?


person Lovelock    schedule 06.08.2019    source источник


Ответы (1)


Вы можете использовать один экстрактор для каждого расширения.
Затем вам нужно изменить значение по умолчанию.

purgeCSS: {
    extractors: () => [
        {
            extractor: class {
                static extract(content) {
                    return (content.match(/[A-z0-9-:\\/]+/g || []).concat(content.match(/[@A-Za-z0-9-:/]+/g) || [])
                }
            },
            extensions: ['html', 'vue', 'js']
         }
    ]
}

https://github.com/Developmint/nuxt-purgecss/issues/52

person tomoya kk    schedule 09.08.2019
comment
Вы даже не представляете, как долго я это искал! Спасибо - person Lovelock; 12.08.2019