只对所需的Node_modules进行内嵌的babel转置。

我对nextjs进行了如下配置,以处理IE11的ES6代码。

 module.exports = {
  poweredByHeader: false,
  distDir: "ssr_build",
  webpack(config) {
    config.node = { fs: "empty", net: "empty", tls: "empty" }
    config.plugins = config.plugins || []
    config.module.rules.push({
      test: /\.js$/,
      include: /node_modules/,
      use: {
        loader: "babel-loader",
        options: {
          presets: [
            [
              "next/babel",
              {
                targets: { ie: 11 },
              },
            ],
          ],
        },
      },
    })
    return config
  },
}

我想知道是否可以有一个条件,只有在ES6的情况下才可以移植node_modules模块,而不需要花时间去移植**所有的东西。. 帮助!**

更新1.0。

我已经找到了需要ES6转换的ES5依赖关系,使用。https:/github.comobaharethare-you-es5。,创建了一个排除的regex,没有成功。我将再试一次,看看是否缺少子-子依赖关系。

我已经尝试了 – https:/github.commartpienext-transpile-modules。不幸的是,它需要手动插入所有的node_modules。这似乎是一个繁琐的过程,于是停止了这个做法。

解决方案:

我看到你有两个选择。

选项1(更好的) – 调查你的依赖关系。大多数的依赖关系在构建阶段就会转移到ES5,然后你就可以了。您可以检查它们的 dist 文件夹(通常),或者只是看看文档或问题。

如果你发现有一些依赖关系被移植到ES6,你可以使用这个next.js插件,有选择地只移植那些。https:/github.commartpienext-transpile-modules。

备选方案2 – 如果您不知道哪些node_modules实际上包含ES6代码,而且您不想花时间去了解您的项目依赖关系。

配置 @babelpreset-env 的配置文件,并且仍然扫描所有的节点模块。这个加载器应该根据你的目标环境,只移植需要移植的代码部分。

{
  "targets": {
    "ie": "11"
  }
}

给TA打赏
共{{data.count}}人
人已打赏
未分类

在谷歌电子表格中用应用程序脚本分割(拆分)合并表格单元格。

2022-9-8 17:14:21

未分类

如何从异步函数返回值

2022-9-8 17:25:16

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索