如何从构建中排除 vuetify 和 vue?

Posted

技术标签:

【中文标题】如何从构建中排除 vuetify 和 vue?【英文标题】:How to exclude vuetify and vue from the build? 【发布时间】:2020-05-14 15:01:57 【问题描述】:

我通过 VueCLI 创建了一个自定义库。我想通过在最终包中不包含 vuetify 和 vue.js 来减小构建的大小。

使用命令构建时,我的最终构建文件 (*.umd.min.js) 可以正常工作:

vue-cli-service build --inline-vue --target lib --formats umd-min ./src/components/Component.vue

如果我将 vuetify 和 vue.js 外部化,那么当我连接库时会出现错误:

Cannot read property 'extend' of undefined 在 vuetify 库中

如何从构建中移除 vuetify 和 vue.js?

【问题讨论】:

【参考方案1】:

我使用构建命令: vue-cli-service build --target lib --formats umd-min ./src/components/Component.vue

并在核心应用中全局注册了 vuetify 组件。

【讨论】:

vuetify 对我来说文件大小没有任何区别。【参考方案2】:

我可以按照此处指南中的说明使用汇总来做到这一点。

https://blog.harveydelaney.com/creating-your-own-vue-component-library/

关键是要确保 vuetify 在 package.json 的 peerDependencies 中列出。

【讨论】:

peerDependencies 对输出没有影响,但为什么呢? 我不确定你的问题。但是是的,peerDeps 只会在构建过程中使用,而不是捆绑在最终输出中。因为您不希望每个 vue 组件都包含在您的发行版中。 我的意思是把 vuetify 放到依赖项或 peerDependencies 中对构建输出没有影响——我希望输出变得更小。【参考方案3】:

你可以使用

configureWebpack: 
    resolve: 
      symlinks: false,
      alias: 
        vue$: path.resolve(__dirname, 'node_modules/vue/dist/vue.runtime.esm.js')
      
    
  ,

在您使用该库的 App 的 vue.config.js 中。

【讨论】:

以上是关于如何从构建中排除 vuetify 和 vue?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Vuetify 进度条计算中删除空值

如何从开始在应用程序中添加 vuetify?

在 Nuxt、Vue、jest 和 Vuetify 中为项目编写单元测试

在 webpack 构建期间 Vuetify CSS 更改顺序

如何在 Laravel 的其他 Vue/Vuetify 组件中嵌入 Vue/Vuetify 组件?

Vue 和 Vuetify 分离 js html 和 css