码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • webpack:使用externals配置来排除打包后的某个依赖&插件IgnorePlugin的使用


    背景

    假设,我们写了一个库并使用 webpack 打包输出 bundle,但是这个库依赖一个第三方包,比如依赖 lodash,这时候我们不想把这个库打包进 bundle 里因为体积会变大,而且我们的主项目里已经安装了这个 lodash,所以依赖主项目里的 lodash 就可以了。

    那我们应该怎么样去除打包后的 lodash 呢?

    使用externals

    module.exports = {
      //...
      externals: {
        jquery: 'jQuery',
        lodash: 'lodash',
        './echarts': 'echarts'
      },
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    可以看到,这里的配置是 key: value 形式的。

    • key 代表的就是 require 中的值
    • value 代表使用哪个全局变量替代它。

    例一

    src/index.js

    require('jquery')
    
    • 1

    webpack.config.js

    module.exports = {
      //...
      externals: {
        jquery: 'jQuery'
      },
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这里我们把 jquery 已经排除掉了,那么我们依赖主项目中的哪个变量作为我们排除掉的 jquery 呢?
    这个里面的 key(jquery) 是指 require('jquery') 中的 jquery,而 value(jQuery)代表去主项目(也就是全局变量)里找 jQuery 这个变量来代替

    例二

    src/index.js

    require('./echarts')
    
    • 1

    webpack.config.js

    module.exports = {
      //...
      externals: {
        './echarts': 'echarts'
      },
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    同理这个就不难理解了,当遇到导入 './echarts' 的时候,就去全局变量里找 echarts。

    webpack插件IgnorePlugin

    和 externals 功能有点像,但是可以更细力度的控制,比如不打包某个第三方包的某一个文件夹

    plugins:[
    	new Webpack.IgnorePlugin(/\.\/locale/,/moment/),//moment这个库中,如果引用了./locale/目录的内容,就忽略掉,不会打包进去
    ]
    
    • 1
    • 2
    • 3

    我们虽然按照上面的方法忽略了包含’./locale/'该字段路径的文件目录,但是也使得我们使用的时候不能显示中文语言了,如果需要我们可以手动引入

    import moment from 'moment'
    
    //设置语言
    
    //手动引入所需要的语言包
    import 'moment/locale/zh-cn';
    
    moment.locale('zh-cn');
    
    let r = moment().endOf('day').fromNow();
    console.log(r);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  • 相关阅读:
    windows DOS/CMD命令:清空文件内容(不是删除)
    极限五分钟,在宝塔中用 Docker 部署升讯威在线客服系统
    安装或卸载Anaconda后Windows自带的cmd命令行窗口会闪退
    行为型模式-观察者模式
    智慧图书馆,RFID技术在图书借还,图书防盗中的应用优势
    全选反选案例:
    Monitoring Database Activity监控数据库活动
    ssm校园失物招领系统毕业设计源码080008
    连线长光卫星:吉林一号的在线产品与生态体系!
    .NET开源且免费的Windows远程桌面管理软件
  • 原文地址:https://blog.csdn.net/weixin_43972437/article/details/133271934
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号