自定义提取器不适用于 Nuxt PurgeCSS

Custom extractor not working with Nuxt PurgeCSS

我正在使用 Nuxt.js 并使用 Nuxt-PurgeCSS:https://github.com/Developmint/nuxt-purgecss

这个项目使用我自己的 CSS 类似于 Tailwind(基于实用程序),我有一些使用 @ 符号的 classes。

这个包的默认正则表达式是:

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

具有以下 classes:

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

它正确地清除了第二个,因为它与提取器的正则表达式不匹配。

我想通过将 Nuxt 配置中的清除CSS 配置更新为以下内容:

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

这个新的提取器包括 @ 符号,但仍然清除带有 @ 符号的 classname。我试过以下正则表达式:

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

查看它是否正确剥离所有内容(作为测试)但它仍然保留第一个 class 并清除第二个,即使它不应该匹配任何内容。

这让我相信我没有正确覆盖默认提取器。

我做错了什么吗?

您可以为每个分机使用一个提取器。
然后,您必须覆盖默认值。

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