如何使用webpack打包一个库library,使用webpack打包sdk.
如何使用webpack打包一个库library
如果你需要自己封装一些包给别人使用,那么可以参考以下方法
初始化库
mkdir library
cd library
npm init -y
经过以上步骤后会生成一个library文件夹,里面包含一个package.json文件。然后简单修改为如下所示:
{"name": "library","version": "1.0.0","description": "","main": "./dist/library.js","scripts": {"build": "webpack"},"keywords": [],"author": "rocky","license": "MIT"
}
简单创建几个文件
在根目录下新建src文件夹,新建一个math.js和string.js。相关文件内容如下:
// math.js
export function add(a,b){return a+b;
}export function minus(a,b){return a-b;
}export function multiply(a,b){return a*b;
}export function division(a,b){return a/b;
}
// string.js
export function join(a,b){return a+" "+b;
}
继续新建一个index.js
import * as math from "./math";
import * as string from "./string";export default {math,string}
简单安装webpack依赖
npm install webpack webpack-cli --save
安装的同时,可以创建webpack配置文件webpack.config.js,如下配置:
const path = require("path");module.exports={mode:"production",entry:"./src/index.js",output:{path:path.resolve(__dirname,"dist"),filename:"library.js",library:"library",// 在全局变量中增加一个library变量libraryTarget:"umd"}
}
安装成功后,执行打包命令
npm run build
之后会在根目录下生成一个dist文件夹,里面包含一个library.js。
如何使用呢?
如果别人要使用这个打包后的library.js的话,可能会有如下几种方式:
// es6方式
import library from "library"// commonjs方式
const library=require("library")// AMD方式
require(["library"],function(){})// script标签引入
<script src="library.js"></script>
在dist文件夹里创建一个index.html,用script引入之前打包生成的library.js。浏览器打开index.html,在控制台中输入library,会得到如下所示的结果:
<script src="../dist/library.js"></script><script>console.log(library);</script>
![2)(C:%5CUsers%5CAcer%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20230725194632458.png)]](https://img-blog.csdnimg.cn/7729a67067e84d06ba303be6dfbaf117.png)
如果不想要default这一层,在Index.js:
import * as math from "./math";
import * as string from "./string";export { math, string }
一个简单的库便打包生成了。
注解:webpack中libraryTarget配置项可以设为umd,表示采用umd规范,如果设置为this,表示在this下挂载了一个library变量。更多用法可参考
webpack官网:https://webpack.js.org/configuration/output/#outputlibrarytarget
引入别的库用法
假设需要引入lodash.安装lodash
npm install lodash --save
修改之前创建的string.js
import _ from "lodash";export function join(a,b){// return a+" "+b;return _.join([a,b]," ");
}
运行打包命令,发现打包出来的库体积变大了,因为我们引入了lodash,导致包变大。怎么办呢?修改webpack配置文件。
增加一个externals配置项:
const path =require("path");module.exports={mode:"production",entry:"./src/index.js",externals:["lodash"],// 配置不打包文件output:{path:path.resolve(__dirname,"dist"),filename:"library.js",library:"library",libraryTarget:"umd"}
}
之后打包就会发现库的体积又变小了。
以上就是一个简单打包库的过程,打包完成后,就可以使用npm相关命令将库发布到npm仓库,发布成功后,就可以让别的小伙伴使用了。也可以直接发送打包后的文件给小伙伴引入使用 !
参考链接:https://segmentfault.com/a/1190000021318631
相关文章:
如何使用webpack打包一个库library,使用webpack打包sdk.
如何使用webpack打包一个库library 如果你需要自己封装一些包给别人使用,那么可以参考以下方法 初始化库 mkdir library cd library npm init -y经过以上步骤后会生成一个library文件夹,里面包含一个package.json文件。然后简单修改为如下所示: {&qu…...
项目一:基于stm32的阿里云智慧消防监控系统
若该文为原创文章,转载请注明原文出处。 Hi,大家好,我是忆枫,今天向大家介绍一个单片机项目。 一、简介 智慧消防监控系统,是用于检测火灾,温度,烟雾的监控系统。以 stm32单片机为核心外加 MQ…...
【果树农药喷洒机器人】Part6:基于深度相机与分割掩膜的果树冠层体积探测方法
📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…...
打印1到最大的n位数
目录 1.题目概述 2.题解 1.题目概述 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。 1. 用返回一个整数列表来代替打印 2. n 为正整数,0 < n < 5 示例: 输入…...
设计模式行为型——状态模式
目录 状态模式的定义 状态模式的实现 状态模式角色 状态模式类图 状态模式举例 状态模式代码实现 状态模式的特点 优点 缺点 使用场景 注意事项 实际应用 在软件开发过程中,应用程序中的部分对象可能会根据不同的情况做出不同的行为,把这种对…...
ElastAlert通过飞书机器人发送报警通知
前言 公司采用ELK架构搜集业务系统的运行日志,以前开发人员只有在业务出现问题的时候,才会去kibana上进行日志搜索操作,每次都是被用户告知系统出问题了,这简直是被啪啪打脸~ 于是痛定思痛,决定主动出击,…...
恒温碗语音芯片,具备数码管驱动与温度传感算法,WT2003H-B012
近年来,随着科技的飞速发展,智能家居产品已然成为了现代生活的一部分,为人们的生活带来了更多的便利和舒适。在这个不断演进的领域中,恒温碗多功能语音芯片——WT2003H-B012成为众多厂商的首选,为智能家居领域注入了全…...
新能源汽车需要检测哪些项目
截至2022年底,中国新能源车保有量达1310万辆,其中纯电动汽车保有量1045万辆。为把好新能源汽车安全关,我国新能源汽车除了完善的强制性产品认证型式实验外,还建立了“车企-地方-国家”逐级上报的三级监管体系实行新能源汽车全生命…...
VR内容定制 | VR内容中控管理平台可以带来哪些价值?
随着科技的不断发展,虚拟现实(VR)技术已经逐渐渗透到各个领域,其中教育领域也不例外。通过VR技术,学生可以身临其境地参与到各种场景中,获得更加直观、生动的学习体验。为了让教师更好地进行VR教学的设计和管理,提高教…...
篇十八:状态模式:状态驱动的行为
篇十八:"状态模式:状态驱动的行为" 开始本篇文章之前先推荐一个好用的学习工具,AIRIght,借助于AI助手工具,学习事半功倍。欢迎访问:http://airight.fun/。 另外有2本不错的关于设计模式的资料&…...
【Tomcat】(Tomcat 下载Tomcat 启动Tomcat 简单部署 基于Tomcat进行网站后端开发)
文章目录 Tomcat下载Tomcat启动Tomcat简单部署 基于Tomcat进行网站后端开发 Tomcat Tomcat 是一个 HTTP 服务器.HTTP 协议就是 HTTP 客户端和 HTTP 服务器之间的交互数据的格式. HTTP 服务器我们可以通过 Java Socket 来实现. 而 Tomcat 就是基于 Java 实现的一个开源免费,也是…...
简单动态字符串 sds
Redis 设计了简单动态字符串(Simple Dynamic String,SDS)的结构,用来表示 字符串。相比于 C 语言中的字符串实现,SDS 这种字符串的实现方式,会提升字符串的操 作效率,并且可以用来保存二进制数据…...
“深入剖析JVM内部原理:解密Java虚拟机的奥秘“
标题:深入剖析JVM内部原理:解密Java虚拟机的奥秘 摘要:本文将深入探讨Java虚拟机(JVM)的内部原理,包括其架构、内存管理、垃圾回收机制、即时编译器等关键组成部分。通过解密JVM的奥秘,我们将更…...
使用QT纯代码创建(查找)对话框详细步骤与代码
一、创建项目文件 打开Qt Creator->文件->新建文件或项目->选择Qt Widgets Application 为项目起名字 输入类的名字 二、 了解每个文件的作用 项目创建完毕之后就会出现以下几个文件,先来分别介绍以下这些文件的作用。 Headers->finddialog.h——很显…...
4945: 二进制转十进制
4945: 二进制转十进制 时间限制: 1.000 Sec 内存限制: 128 MB 提交: 520 解决: 335 [命题人:][下载数据: 30] 提交状态报告 题目描述 将二进制数转成十进制输出 输入 一行,一个二进制数,二进制数的位数小于32位。 输出 一个十进制的整数。…...
java后端技术汇总 + 中间件 + 架构思想
1. 华为OD机考题 答案 2023华为OD统一考试(AB卷)题库清单-带答案(持续更新) 2023年华为OD真题机考题库大全-带答案(持续更新) 2. 面试题 一手真实java面试题:2023年各大公司java面试真题汇总--…...
《机器学习系统:设计与实现》读书笔记一
最近几年一直在做算法工程的工作,对机器学习系统有所涉猎,也很感兴趣。近期发现一本开源书籍《机器学习系统:设计与实现》。去图书馆找了它的纸质版,发现内容不尽相同。在这里结合两者做一个读书笔记。本文是第一篇,主…...
C语言单链表OJ题(较难)
一、链表分割 牛客网链接 题目描述: 现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。 思路:…...
工业巡检ar沉浸式互动培训体验实现更加直观、生动的流程展示
以往的工业手工巡检效率极低,错误率偏高,漏检问题严重,会因为现场人员对机械设备的早期维护、操作不会,而影响正常交付和服务,智慧工业是工业智能化和信息化的重要体现,在巡检方面自然也要同步提升…...
【Spring】核心容器——依赖自动装配
Spring容器根据bean所依赖的资源在容器中自动查找并注入bean的过程叫做自动装配自动装配的方式 1、按类型 2、按名称(耦合性较高) 3、按构造方法 自动装配特点 1、自动装配用于对引用类型进行依赖注入,不能对简单类型进行操作 2、自动装配的…...
保姆级教程:手把手教你用QFIL救活高通9008端口变砖的手机(附常见错误日志分析)
高通9008端口救砖全指南:从QFIL操作到日志分析实战 当你的手机因刷机失败、系统崩溃彻底变砖,连开机画面都消失时,高通9008端口往往是最后的救命稻草。作为芯片级修复模式,它绕过了所有系统层限制,允许直接与处理器通信…...
R 4.5量化回测必须掌握的3个隐藏函数——.onLoad回测钩子、getStrategyEnv()与backtest::audit()审计接口
第一章:R 4.5量化回测生态演进与核心范式跃迁R 4.5版本标志着量化回测基础设施的一次结构性升级,其核心不再局限于传统时间序列建模能力的增强,而是通过统一的S3/S4对象协议重构了回测生命周期管理范式。底层C引擎(RcppQuantuccia…...
别再只用if-else了!用Simulink Stateflow Chart模块给你的算法加个‘状态’(附代码生成分析)
从条件分支到状态思维:用Simulink Stateflow重构复杂算法逻辑 在汽车电子和工业控制领域,工程师们常常需要处理多模态的系统行为。传统做法是用if-else或Switch模块搭建决策树,但当系统状态超过三个、状态转移条件涉及多个传感器输入时&#…...
2025届学术党必备的六大降AI率方案实测分析
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 基于自然语言处理跟深度学习算法构建了AI论文查重系统,它会对文本语义展开细致分…...
Redis 慢查询日志分析与性能调优
Redis作为一款高性能内存数据库,其响应速度直接影响业务体验。当出现性能瓶颈时,慢查询日志成为关键突破口。本文将深入分析Redis慢查询日志的实用技巧,并提供针对性性能调优方案,帮助开发者快速定位并解决潜在问题。 慢查询日志…...
别再乱改Serial参数了!深入解读ArduPilot地面站里Serial1到Serial7每个串口的预设功能
深入解析ArduPilot串口配置:从Serial1到Serial7的功能定位与避坑指南 当你第一次打开ArduPilot地面站的"全部参数表",看到Serial1到Serial7那一排神秘的参数时,是否感到困惑?特别是当某个串口显示为-1时,你是…...
JDK1.8环境下的传统系统AI升级:忍者像素绘卷与Java老项目集成
JDK1.8环境下的传统系统AI升级:忍者像素绘卷与Java老项目集成 1. 老系统AI升级的痛点与机遇 很多企业还在使用JDK1.8这样的老版本Java环境运行核心业务系统。这些系统通常已经稳定运行多年,但面临智能化升级的需求。传统系统引入AI能力时,常…...
PyTorch推理扩展实战:用Ray Data轻松实现多机多卡并行
单机 PyTorch 模型跑推理没什么问题,但数据量一旦上到万级、百万级,瓶颈就暴露出来了:内存不够、GPU 利用率低、I/O 拖后腿,更别说还要考虑容错和多机扩展。传统做法是自己写多线程 DataLoader、管理批次队列、手动调度 GPU 资源&…...
SketchUp选择工具全解析:从点选到反选,6种技巧提升建模效率
SketchUp选择工具全解析:从点选到反选,6种技巧提升建模效率 在三维建模的世界里,精确选择是高效创作的基石。就像雕塑家需要精准控制每一处凿刻的力度和位置,SketchUp用户也必须掌握选择工具的精髓。许多中级用户虽然能完成基础建…...
别再手动登录了!用VBS脚本自动打开Chrome并填写表单(附完整代码)
解放双手:用VBS脚本实现Chrome自动化表单填写全攻略 每次打开浏览器、输入网址、填写账号密码、点击登录...这些重复性操作是否让你感到厌倦?对于测试工程师、运维人员或经常需要处理批量表单的行政人员来说,这类机械操作不仅耗时耗力&#x…...
