【问题标题】:Vue CLI: Bundle common dependency for async web components only onceVue CLI:只为异步 Web 组件捆绑公共依赖项一次
【发布时间】:2021-02-16 12:01:53
【问题描述】:

我正在使用 Vue 从单个存储库中使用 Vue CLI 的目标 wc-async 生成多个(20 多个)异步 Web 组件:

vue-cli-service build --report --target wc-async --inline-vue --name openeo \"./components/*.vue\"

我有一个“utils.js”,它被导入到所有 Web 组件中。查看 Vue CLI 生成的报告,utils.js(加上 utils.js 中的所有导入)与每个 Web 组件捆绑在一起,所以我有 20 多倍的千字节开销,我将其放入“条目”捆绑包(openeo.js)。有没有办法做到这一点?对于 Vue,CLI 中有 --inline-vue 标志,但不清楚如何以相同方式处理其他依赖项。

我查看了 Vue + WebPack 文档,甚至在代码本身中 entry-wc.js is generated 的位置,但找不到入口点或未被 Vue CLI 以某种方式覆盖的设置。

tl;dr:如何使用 Vue (CLI) 将跨多个异步 Web 组件的通用文件放入包的入口文件中?

【问题讨论】:

    标签: vue.js webpack web-component vue-cli custom-component


    【解决方案1】:

    您可以尝试将其添加到 vue.config.js,但这可能不足以满足您的用例:

      configureWebpack: (config) => {
        config.optimization = {
          runtimeChunk: 'single',
          moduleIds: 'hashed',
          splitChunks:
          {
            automaticNameDelimiter: '_',
            chunks: 'all',
            maxInitialRequests: 5,
            minSize: 5000,
            //maxSize: 250000,
            cacheGroups:
            {
              default:
              {
                    minChunks: 2,
                    priority: -20,
                    reuseExistingChunk: true,
                },
              vendor:
              {
                reuseExistingChunk: true,
                test: /[\\/]node_modules[\\/]/,
                name(module)
                {
                  // get the name. E.g. node_modules/packageName/not/this/part.js
                  // or node_modules/packageName
                  const packageName = module.context.match(/[\\/]node_modules[\\/]([^\\/]+)([\\/]|$)/)[1];
    
                  // npm package names are URL-safe, but some servers don't like @ symbols
                  return `vendor_${packageName.replace('@', '')}`;
                },
              },
            },
          },
        };
    }
    

    【讨论】:

    • 是的,确实如此。它没有完全捕获用例,并且与 Vue CLI 设置的设置冲突。还是谢谢你。
    猜你喜欢
    • 2019-02-05
    • 2013-11-02
    • 2018-04-18
    • 2015-12-03
    • 2015-10-04
    • 2019-04-16
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    相关资源
    最近更新 更多