javascript - vuetifyjs : Adding only used icons to build

标签 javascript vue.js vuetify.js material-design-icons

我目前正在使用默认的“Material Design Icons”构建一个 vuetifyjs-app。在生产版本中,我只使用了这种字体的 2 个图标(由 vuetify-component 芯片使用)。

按照建议,我将完整的图标字体包含在
<link href="https://cdn.jsdelivr.net/npm/@mdi/font@3.x/css/materialdesignicons.min.css" rel="stylesheet">
但是生产构建这迫使用户下载几乎 0.5MB 的数据,仅用于 2 个图标。
有没有办法:

  • 在 CDN 请求中仅包含所需的图标
  • 使用 Tree-Shaking 在主 CSS 文件中只包含需要的图标? (我正在使用 parcel.js 构建器)
  • 最佳答案

    我们建议使用 @mdi/js在可能的情况。这提供了一个 ES 模块,它导出图标集中每个图标的 SVG 路径并支持 treeshaking。您只需将图标字符串传递给 SVG 路径元素,或者在这种情况下,您可以将其直接传递给 v-icon如果您在 Vuetify 配置中指定图标字体:iconfont: 'mdiSvg' .

    安装

    npm install @mdi/js
    

    用法

    <template>
      <v-icon>{{ mdiCheck }}</v-icon>
    </template>
    
    <script>
      import { mdiCheck } from '@mdi/js'
    
      export default {
        data: () => ({
          mdiCheck,
        }),
      }
    </script>
    

    您可以在此处阅读有关与 Vuetify 集成的更多信息:https://vuetifyjs.com/en/customization/icons#install-material-design-icons-js-svg

    关于javascript - vuetifyjs : Adding only used icons to build,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57552261/

    相关文章:

    javascript - 如何使用 Jest 和新的 React lazy 16.6 API 测试快照

    javascript - 语义 UI 弹出窗口在 angularjs 指令内不起作用

    javascript - 编辑字节并将其添加到二进制文件(uint8array)

    vue.js - linting 时应该使用 "plugin:vue/essential"和 "plugin:vue/vue3-recommended"吗?

    typescript - 如何使用严格类型的有效负载发出事件? | Vue 3 Composition API + TypeScript

    css - 如何在vuetify中使用动画素材图标

    javascript - 捏缩放后 iPhone 谷歌地图 v3 平移

    vue.js - 用户使用 token 身份验证登录后如何隐藏登录路由导航元素?

    vue.js - VuetifyJS,路由器链接未显示为光标

    vue.js - Vuetify - 如何设置背景颜色