Nuxtjs + Vuetify + Purgecss

Posted

技术标签:

【中文标题】Nuxtjs + Vuetify + Purgecss【英文标题】: 【发布时间】:2021-08-20 03:09:20 【问题描述】:

看到 Vuetify 在使用带有 nuxt@vuetify-module 的图标时添加了大约 300-340kb 的图标:'mdi',我发现答案表明 purgeCSS 是去除不必要和未使用图标的好方法。

我最初从“mdi/font”手动导入图标,但很快意识到这是一个非常无效的解决方案,因为它迫使我不断想出手动将图标添加到组件的解决方案。

我似乎无法让 purgecss 删除图标(这对我来说是最重要的)。

我安装了“@nuxtjs/vuetify”:“^1.11.3”, 我安装了“nuxt-purgecss”:“^1.0.0”, 我安装了 "@mdi/font": "^5.9.55",

看着这个答案,我试图创建我的设置 why do i see vuetify css in view source? 他们也在这里讨论: https://github.com/vuetifyjs/vuetify/issues/7265

vuetify: 
    customVariables: ['~/assets/variables.scss'],
    treeShake: true,
    defaultAssets: 
      font: 
        family: 'Ubuntu',
      ,
      icons: 
      iconfont: 'mdi',
    ,
    ,
    theme: 
      dark: false,
      themes: 
        light: 
          primary: '#fec655',
          primarytext: '#23263e',
        ,
      
    
  ,
  purgeCSS: 
    enabled: true,
    paths: [
      'components/**/*.vue',
      'layouts/**/*.vue',
      'pages/**/*.vue',
      'plugins/**/*.js',
      './node_modules/vuetify/dist/*.js',
      './node_modules/vuetify/dist/*.css',
      './node_modules/vuetify/src/**/*.ts',
      './node_modules/@mdi/fonts/*',
    ],
    styleExtensions: ['.css'],
    // whitelist: ['body', 'html', 'nuxt-progress', ''],

    whitelist: ['v-application', 'v-application--wrap','layout','row','col'],
    whitelistPatterns: [
      /^v-((?!application).)*$/,
      /^theme--*/,
      /.*-transition/,
      /^justify-*/,
      /^p*-[0-9]/,
      /^m*-[0-9]/,
      /^text--*/,
      /--text$/,
      /^row-*/,
      /^col-*/,
      /leaflet/, 
      /marker/
    ],
    whitelistPatternsChildren: [/^v-((?!application).)*$/, /^theme--*/],

    extractors: [
      
        extractor: content => content.match(/[A-z0-9-:\\/]+/g) || [],
        extensions: ['html', 'vue', 'js']
      
    ]
  ,

然而,这个请求是用原始尺寸提出的,有什么想法吗?我在这里做错了什么?字体显然是从本地提取的,而不是从 CDN 提取的。

【问题讨论】:

【参考方案1】:

除了使用 PurgeCss 之外,您是否尝试过使用 @mdi/js 代替 mdi 图标?

这来自 dev.materialdesignicons.com 指南:

由于性能和整体请求大小,强烈建议不要在易于使用的情况下使用 webfont

所以你可以通过切换到@mdi/js pachage 来滚动它: https://www.npmjs.com/package/@mdi/js 然后在 nuxt.config.js 中的 vuetify 选项中指定用法

    icons: 
       iconfont: 'mdiSvg',
    

现在您已经大大节省了捆绑包的大小。

【讨论】:

这并不能真正回答问题。如果您有其他问题,可以点击 提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 引起更多的关注。

以上是关于Nuxtjs + Vuetify + Purgecss的主要内容,如果未能解决你的问题,请参考以下文章

错误:找不到模块`@nuxtjs/vuetify`。 (v2.0.0-beta.2)

如何在 nuxt js 中使用 vuetify 作为插件?

Vuetify,Nuxt,在开发模式下使用摇树

Vuetify 导航抽屉开始关闭,然后一秒钟后打开

如何更新 vuetify mdi 图标? (Nuxt.js)

CORS 策略阻止访问 Mailchimp API