背景
小A同学是个很热爱开发的技术仔,小B整天是个摸鱼的高手。有天小B遇到一个很棘手的逻辑,正好这个逻辑是小A刚写过的,小B表示能不能把代码分享给他,小A很慷慨的复制给他了。但是小C也不想重复造轮子,也找到了小A。小A表示,我还是发个npm包吧,大家都可以直接用了。日常开发中这样的例子数不胜数,但是大多数前端程序员觉得发npm 包不应该是那些大佬做的事嘛,和自己没啥关系。今天我们从0实现一个非常简易的函数包,重在发布的过程体验。
目标
Javascript在实现大数加法的时候会出现一个精度丢失的问题,我们需要实现一个函数保证精度不丢失。 需要有压缩版本 和非压缩版本,并且支持AMD/CJS/ESM等各种模块的引入。
项目初始化
1 初始化package.json 确定库的名称和版本 2 创建webpack.config.js文件 3 确定文件目录
实现不同压缩版本
相同的入口文件打包时给予不同的命名,并通过output [name].js输出不同的文件,但是怎么对不同命名的文件进行压缩呢,这里我们运用到了terser-webpack-plugin插件。
注意:这里的正则匹配不加引号!
设置模块引入方式
- libraryExport可以设置默认default便于直接引入库
- libraryTarget设置成umd可以支持各种模块引入方式
主体库内容
导出函数主体
根据环境使用不同压缩包
需要在package.json设置main主函数调用
根据环境使用不同压缩包
发布上线
npm publish上线库,注意上线前需要注册npm账号 ,并登陆。可以通过npm whoiam查看当前npm账户信息并且npm login登陆。
发布成功
本人也是菜鸟一枚 ,旨在分享学习过程 ,难免会有不合理的地方欢迎指正,轻喷,嘻嘻嘻嘻嘻嘻~