从0开始 使用webpack构建发布一个npm包

1,507 阅读2分钟

src=http___5b0988e595225.cdn.sohucs.com_images_20180705_c255c42b2a23478ab8754702fe6ca2ab.jpeg&refer=http___5b0988e595225.cdn.sohucs.jpeg

背景

小A同学是个很热爱开发的技术仔,小B整天是个摸鱼的高手。有天小B遇到一个很棘手的逻辑,正好这个逻辑是小A刚写过的,小B表示能不能把代码分享给他,小A很慷慨的复制给他了。但是小C也不想重复造轮子,也找到了小A。小A表示,我还是发个npm包吧,大家都可以直接用了。日常开发中这样的例子数不胜数,但是大多数前端程序员觉得发npm 包不应该是那些大佬做的事嘛,和自己没啥关系。今天我们从0实现一个非常简易的函数包,重在发布的过程体验。

目标

Javascript在实现大数加法的时候会出现一个精度丢失的问题,我们需要实现一个函数保证精度不丢失。 需要有压缩版本 和非压缩版本,并且支持AMD/CJS/ESM等各种模块的引入。

项目初始化

1 初始化package.json 确定库的名称和版本 2 创建webpack.config.js文件 3 确定文件目录

image.png

实现不同压缩版本

相同的入口文件打包时给予不同的命名,并通过output [name].js输出不同的文件,但是怎么对不同命名的文件进行压缩呢,这里我们运用到了terser-webpack-plugin插件。

image.png

注意:这里的正则匹配不加引号!

设置模块引入方式

  • libraryExport可以设置默认default便于直接引入库
  • libraryTarget设置成umd可以支持各种模块引入方式

主体库内容

导出函数主体

image.png

根据环境使用不同压缩包

需要在package.json设置main主函数调用

image.png

根据环境使用不同压缩包

image.png

发布上线

npm publish上线库,注意上线前需要注册npm账号 ,并登陆。可以通过npm whoiam查看当前npm账户信息并且npm login登陆。

image.png

发布成功

image.png 本人也是菜鸟一枚 ,旨在分享学习过程 ,难免会有不合理的地方欢迎指正,轻喷,嘻嘻嘻嘻嘻嘻~