老项目webpack3升级webpack4 顺便升级到babel7,发现run-time注入了所有的组件,包括公共模块

发布于 2022-09-11 21:53:36 字数 1910 浏览 18 评论 0

老项目是webpack3做构建的,今天有时间想把webpack升级到4,babel由6升级到7,出现了run-time相关的问题,求大神解答。

先看babel6的配置

{
  "presets": [
    ["env", {
      "modules": false,
      "targets": {
        "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
      }
    }],
    "stage-2"
  ],
  "plugins": [
    "transform-vue-jsx", 
    "transform-runtime",
    ["import", {
      "libraryName": "vant",
      "libraryDirectory": "es",
      "style": true
    }],
    [
      "component",
      {
        "libraryName": "element-ui",
        "styleLibraryName": "theme-chalk"
      }
    ]
  ]
}

打包效果
图片描述

babel7配置

{
  "presets": [
    [
      "@babel/preset-env",
      {
        "modules": false,
        "targets": {
          "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
        },
        "useBuiltIns": "usage",
        "corejs": 2,
      }
    ]
  ],
  "plugins": [
    "@babel/plugin-transform-runtime",
    "transform-vue-jsx",
    ["import", {
        "libraryName": "vant",
        "libraryDirectory": "es",
        "style": true
      }
    ],
    [ "component", {
        "libraryName": "element-ui",
        "styleLibraryName": "theme-chalk"
      }
    ]
  ]
}

打包效果
图片描述

可以发现babel7相对于babel6打包的异步加载的组件对应的js都多了node_modules下面只有run-time一个引用,导致打打包比之前大了好多。

babel6下的一个组件整体
图片描述

babel7下的组件整体
图片描述

这个是babel7抽离的公共模块 和babel6的基本一致,只有core.js引入不一致,比babel6大了有20多k(压缩后)。
图片描述

我这个是因为之前run-time注入的不对,还是我升级后注入重复了呢?
看了babel7的文档页没发下有什么配置上的问题

大神们,请问有遇到这种情况的吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

满地尘埃落定 2022-09-18 21:53:36

按照babel6babel7配置差别,@babel/preset-env多了useBuiltInscore-js的配置,应该去掉这两个配置就好。

分别看babel6-envbabel7-env,可以看到useBuiltIns默认为 false,如果配置非false就会自动加入相应需要支持的babel-polyfill

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文