package.json中的dependencies(生产依赖)和devDependencies(开发依赖)

本文介绍了npm install/uninstall命令的使用,以及package.json中dependencies和devDependencies的区别。dependencies用于存放项目运行所需依赖,而devDependencies则存放开发阶段的工具和库。文章通过实例分析了将log4js误放入devDependencies导致的生产环境问题,并说明了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

项目开发过程中,难免会遇到需要npm install XXX的时候,这就又涉及安装的这个依赖模块是放到package.json中的dependencies或者是devDependencies中的问题。
在你才开始接触开发的时候(下面以安装axios为例),或许你也为npm install axios/npm uninstall axios、npm install axios -save/npm uninstall axios -save还是npm install axios --save-dev/npm uninstall axios --save-dev的后缀问题纠结过。

二、安装/卸载依赖

1、npm install和npm uninstall

01、没有指定安装到哪种环境下的“后缀”,就会发现node-modules中有,但是package.json中没有的情况。这样别人如果拉了你的代码执行npm install后其实是无法正常使用的,极大地影响了协作效率

// 下载到node_modules下
npm install axios
// 从node_modules下删除
npm uninstall axios

02、保存(install)/删除(uninstall)到生产依赖(dependencies),执行这个命令之后,在node_mosules中axios被下载(install)/删除(uninstall),axios也以键值对的形式出现(install)/删除(uninstall)package.json中的dependencies下属中:

// 安装到生产依赖(dependencies)
npm install axios --save
// 从生产依赖(dependencies)中删除
npm uninstall axios --save

03、保存(install)/删除(uninstall)到开发依赖(devDependencies),执行这个命令之后,你会发现axios以键值对的形式出现(install)/删除(uninstall)package.json中的devdependencies 下属中:

// 安装到开发依赖(devDependencies)
npm install axios --save-dev
// 从开发依赖(devDependencies)中删除
npm uninstall axios --save-dev

2、package.json中的dependencies和devDependencies

01、dependencies:
是一个对象,里面有键值对形式的属性,其中,key是模块名,value是你的项目中安装的此模块的版本。该对象中列举的模块(插件)属于生产环境的依赖,即项目正常运行所需要加载的依赖。比如:你的项目是基于Vue开发,这时Vue就必须装到生产环境中。
02、devDependencies:
是一个对象,里面有键值对形式的属性,其中,key是模块名,value是你的项目中安装的此模块的版本。该对象中列举的模块(插件)属于开发环境的依赖,比如一些测试依赖或者xxx-loader等。

3、我在实际开发中遇到关于这部分的问题、分析以及最后解决

发现问题:我的一个基于electron打包的exe安装包项目中,将log4js这个依赖模块放到了devDependencies中,本地npm start启动项目是可以正常使用这个模块没有报错的,但是当我使用electron-builder将我的代码打包为exe后,我发现log4js这个模块并没有起作用,打开控制台,发现控制台报错说找不到这个模块。
分析问题
01、排除log4js的相关js文件在html中引入的问题:我确认了HTML文件中却是引入了log4js的相关js文件;
02、排除封装的函数以及函数调用的问题:项目本地启动并且使用log4js功能OK;
03、定位问题点:最后结合报错的提示说“找不到对应模块”,我估计可能是因为在打包后的为生产环境,生产环境下缺少了项目所正常运行所需的这个依赖。我去看了这个依赖到底在没在我的exe安装后文件夹的node_modules中,一看,果然是没有的。
解决问题
我把在devDependencies对象下的log4js属性剪切到了dependencies对象下,本地启动OK,打包后启动,OK。

参考链接
浅析package.json中的devdependencies 和 dependencies
package.json 文件详解

欢迎大家一起讨论、学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值