V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Lockroach
V2EX  ›  问与答

babel 怎么打包出不引入其他依赖的 js 文件

  •  
  •   Lockroach · 10 小时 17 分钟前 · 326 次点击

    项目有需求要支持 ie6 ,而且是采用后端模板渲染的方式渲染,现在预想的方案是使用 babel 配合 core-js 实现 polyfill 来兼容 ie ,但是打包产物中有很多 require corejs 包的语句,require 进来的文件还嵌套 require 其他文件。这样的话提供给后端模板渲染时需要引入的 js script 就太多了。 有什么方法可以让 babel 和 corejs 直接根据输入的 js 文件将对应的 polyfill 实现的具体代码也打包到产物中而不是使用 require 引入的方式实现 polyfill ?

    6 条回复    2024-12-01 23:53:48 +08:00
    lisongeee
        1
    lisongeee  
       8 小时 51 分钟前
    > 需要引入的 js script 就太多了

    你的打包没有合并逻辑?按理说最终的 polyfill 产物只有一个文件,感觉你的配置有问题

    另外其实可以不打包,直接顶部加一行引入 https://polyfill.alicdn.com/polyfill.min.js
    xie919
        2
    xie919  
       7 小时 57 分钟前
    现在还有 IE6 啊,好奇甲方干啥的。
    Lockroach
        3
    Lockroach  
    OP
       7 小时 40 分钟前 via Android
    @xie919 是我们这的客户端程序,里面应该是 mfc 程序引用了 webview1 ,说是要在继续使用这个客户端程序的前提下重构页面逻辑。测试过这个 webview 应该是 ie6 ,trident 内核的
    Lockroach
        4
    Lockroach  
    OP
       7 小时 1 分钟前
    @lisongeee 用 corejs 和 babel 打包出来类似这样
    ```javascript
    "use strict";

    require("core-js/modules/es.symbol.js");
    require("core-js/modules/es.symbol.description.js");
    require("core-js/modules/es.symbol.async-iterator.js");
    require("core-js/modules/es.symbol.has-instance.js");
    require("core-js/modules/es.symbol.is-concat-spreadable.js");
    require("core-js/modules/es.symbol.iterator.js");
    require("core-js/modules/es.symbol.match.js");
    require("core-js/modules/es.symbol.match-all.js");
    require("core-js/modules/es.symbol.replace.js");
    require("core-js/modules/es.symbol.search.js");
    require("core-js/modules/es.symbol.species.js");
    require("core-js/modules/es.symbol.split.js");

    // 实际逻辑
    ```
    里面用到了很多 require ,而且 require 引入的 js 文件里还另外 require 了 internal 的其他包,将这些包全加入到项目比较复杂和麻烦。
    > 另外其实可以不打包,直接顶部加一行引入 https://polyfill.alicdn.com/polyfill.min.js
    这段 polyfill 支持 ie6 吗,如果可以就帮大忙了,具体测试要明天上班才能测试
    ysc3839
        5
    ysc3839  
       6 小时 46 分钟前
    @Lockroach head 里面加上 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 试试?
    另外那个不叫 WebView1 ,WebView1 指的是老 Edge 的 WebView ,IE 的叫 WebBrowser 或者 ieframe 。
    li1218040201
        6
    li1218040201  
       4 小时 51 分钟前
    babel 是语法转换工具,core-js 是工具库。打包工具应该是 webpack 、rollup 、esbuild 或者其他的,我看应该是打包工具哪里需要配置
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   925 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 20:45 · PVG 04:45 · LAX 12:45 · JFK 15:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.