FE : 关于npm包中包如何处理

352 阅读2分钟

五一节后来的第一天业务又要让导一份数据··· 可是后端的小哥哥还在家里哈皮啊,我能怎么办···不行?···是不可能的···这是我最后的倔强,毕竟男人不能说自己不行···

数据来源其实就可以从后台系统看到,所以只要导出el-table的数据就好了呀···so,一顿输出写了个基于xlsx和file-saver的 eltable-as-xlsx,然而这不是重点···

一切都很完美,明早的太阳依旧会高高挂起···

然而上线后发发现打包出错了···

image.png

这是因为在安装依赖的时候用到了file-saver但是并没有安装···

还记得我说过我的 eltable-as-xlsx 是基于xlsx和file-saver 吗?对的,我站在巨人的肩膀上摘了桃子还拉了一泡粑粑···

默默的打开eltable-as-xlsx 发现当时在安装 xlsx和file-saver的时候使用的命令还在··· npm i xlsx file-saver -D ,对 ,你没看错是 -D;

当把npm i xlsx file-saver ** -D **换成npm i xlsx file-saver -S 重新安装并发版问题解决 ,并且node-modules中已经存在xlsx 和 file-saver 两个包;

至此,问题解决;

npm i XXX -D 和 -S 有什么区别

-D-S是npm安装包时用的两个参数,它们分别代表--save-dev--save

-D--save-dev会将安装的包保存在devDependencies中,这表示这些包仅在开发环境中需要,例如测试框架、构建工具和代码检查器等。这些包不会出现在生产环境中,因为它们不需要在生产环境中运行。

示例:npm install jest -D 将jest包安装到devDependencies中。

-S--save会将安装的包保存在dependencies中,这表示这些包在生产环境中需要,例如应用程序本身需要的库或框架。

示例:npm install lodash -S 将lodash包安装到dependencies中。

需要注意的是,从npm 5开始,使用-S-D已经不再必要,因为默认情况下安装的包会自动保存到dependenciesdevDependencies中,具体取决于包是否有peerDependencies声明。

总之,使用-D安装的包表示这些包仅在开发环境中需要,而使用-S安装的包则表示这些包在生产环境中需要。