vue.js - vue-cli 库构建中未考虑 Vuetify 选项

标签 vue.js webpack vuetify.js vue-cli

我的应用程序已正确包装为 <v-app>我的 vuetify 选项在开发模式下工作正常,或者如果我使用 vue-cli-service build 正常构建例如。

Vue.use(Vuetify, {
  iconfont: 'fa',
  theme: {
    primary: '#213e79',
    secondary: '#c0d8ed', 
    accent: '#4ea3ed',
    error: '#b71c1c',
    info: '#2196f3',
    success: '#66bb6a', 
    warning: '#f57f17'
  }
});

但是,如果我在库模式下构建(例如: vue-cli-service build --target lib --name xxx ),则考虑上述选项。我被迫修改vuetify/dist/vuetify.js由于缺乏更好的解决方案..

知道可能是什么问题吗?如果你们中的任何人有解决方法,那就太好了:)

最佳答案

当 Vue CLI 的构建目标是 lib 时,不会使用您的原始入口点(例如 main.js)。 Vue CLI docs 中描述了此行为。此入口点文件通常是导入 Vuetify 插件的位置。要解决此问题,只需将 Vuetify 的导入移至项目中的主 .vue 组件中即可。这通常称为 App.vue,但如果您没有使用 CLI 来构建项目,则可能有其他名称。

在主 .vue 文件中,导入 Vuetify 和您的 Vuetify 选项。然后,在组件声明中,只需包含一个使用导入的 Vuetify 实例填充的 vuetify 属性。以下是 Vuetify 基本“Hello World”示例应用程序中的 App.vue 组件,经过修改以兼容导出为 lib:

<script>
import HelloWorld from './components/HelloWorld';

import vuetify from './plugins/vuetify'     //IMPORT THE VUETIFY CONFIG FILE

export default {
  name: 'App',

  components: {
    HelloWorld,
  },

  data: () => ({
    //
  }),

  vuetify, //ADD IT TO THE COMPONENT DECLARATION
};
</script>

更新:

为了使用 Vuetify 2.x 在组件中加载 Vuetify,Vuetify 插件文件应遵循以下模式:

import Vue from 'vue'
import Vuetify from 'vuetify';
import '@/assets/stylus/main.styl';

Vue.use(Vuetify)

export default new Vuetify ({
  iconfont: 'fa',
  theme: {
    primary: '#213e79',
    secondary: '#c0d8ed',
    accent: '#4ea3ed',
    error: '#b71c1c',
    info: '#2196f3',
    success: '#66bb6a',
    warning: '#f57f17'
  }
})

对于 VUETIFY 1.5.x

使用 Vuetify 1.5.x 而不是 Vuetify 2.x 时存在一些差异。

首先,没有必要在组件声明中包含 vuetify 对象。您仍然应该导入 ./plugins/vuetify 文件。

其次,主题和图标必须在 beforeCreate 生命周期 Hook 中单独配置。这是一个例子:

beforeCreate() {

    //Override the default icons with the Font-Awesome preset
    this.$vuetify.icons = {
      'complete': 'fas fa-check',
      'cancel': 'fas fa-times-circle',
      'close': 'fas fa-times',
      'delete': 'fas fa-times-circle', // delete (e.g. v-chip close)
      'clear': 'fas fa-times-circle', // delete (e.g. v-chip close)
      'success': 'fas fa-check-circle',
      'info': 'fas fa-info-circle',
      'warning': 'fas fa-exclamation',
      'error': 'fas fa-exclamation-triangle',
      'prev': 'fas fa-chevron-left',
      'next': 'fas fa-chevron-right',
      'checkboxOn': 'fas fa-check-square',
      'checkboxOff': 'far fa-square', // note 'far'
      'checkboxIndeterminate': 'fas fa-minus-square',
      'delimiter': 'fas fa-circle', // for carousel
      'sort': 'fas fa-sort-up',
      'expand': 'fas fa-chevron-down',
      'menu': 'fas fa-bars',
      'subgroup': 'fas fa-caret-down',
      'dropdown': 'fas fa-caret-down',
      'radioOn': 'far fa-dot-circle',
      'radioOff': 'far fa-circle',
      'edit': 'fas fa-edit',
      'ratingEmpty': 'far fa-star',
      'ratingFull': 'fas fa-star',
      'ratingHalf': 'fas fa-star-half'
    }

    //Override the theme colors.
    this.$vuetify.theme = {
        primary: '#213e79',
        secondary: '#c0d8ed', 
        accent: '#4ea3ed',
        error: '#b71c1c',
        info: '#2196f3',
        success: '#66bb6a', 
        warning: '#f57f17'
    }
}

关于vue.js - vue-cli 库构建中未考虑 Vuetify 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59306100/

相关文章:

html - 溢出不显示所有内容(剪切)

javascript - Vuetify 在数据表单元格内使用 v-html

Vue.js:以编程方式实例化功能组件

javascript - 防止 VueJS 中的滚动

javascript - 如何在preact中延迟加载组件?

javascript - Vuetify/VueJS - 在清除输入之前不会显示自动完成结果

vue.js - ApexCharts 填充线之间的区域

javascript - 对 vuejs-templates webpack-simple 代码片段感到困惑

angularjs - 如何集成 ocLazyLoad 和 Webpack 或按 View 进行代码分割

webpack - 使用Webpack文件加载器提供mp3文件