Webpack-代码拆分:将库拆分成自己的文件

时间:2019-10-01 13:48:40

标签: javascript laravel vue.js webpack babel

我正在使用Webpack分块来拆分我的组件

使用这两个库-

  1. “ babel-plugin-dynamic-import-webpack”:“ ^ 1.1.0”,
  2. “ babel插件语法动态导入”:“ ^ 6.18.0”,

当我延迟加载组件时-

const component1 = () => import(/* webpackChunkName: "components" */ '../components/Component1.vue');

工作正常 但是,当我尝试延迟加载类似 bootstrap-vue -

的库时
const BootstrapVue = () => import(/* webpackChunkName: "bootstrap-vue" */ 'bootstrap-vue')
Vue.use(BootstrapVue);

给我一​​个错误,说bootstrap-vue组件是未知的-

错误消息:Unknown custom element: <b-container> - did you register the component correctly?

但是,如果我只按常规进行import BootstrapVue from 'bootstrap-vue',它就可以正常工作。但是它不会进行代码拆分。

用webpack块导入库并制作自己的文件的好方法是什么?

Webpack配置。我正在使用laravel-mix-

webpackConfig.output = {
    chunkFilename: 'js/[name].bundle.js',
    publicPath: '/',
}

1 个答案:

答案 0 :(得分:1)

import返回一个Promise。所以这个:

const promise = import(/* webpackChunkName: "bootstrap-vue" */ 'bootstrap-vue');

promise.then(BootstrapVue => {
  Vue.use(BootstrapVue);
  new Vue({
    render: h => h(App)
  }).$mount('#app');
});

在承诺解决后将引导Vue。