浅析package.json中的devdependencies 和 dependencies

本文深入解析npm中的dependencies和devDependencies的区别与用法,包括如何安装、更新和删除依赖,以及在团队协作中正确配置package.json的重要性。

1、dependencies和devDependencies 具体代码如下
“name”: “webpack-react-express”,
“version”: “0.2.0”,
“private”: true,
“dependencies”: {
“antd”: “^2.13.11”,
“babel-polyfill”: “^6.26.0”,
“base-64”: “^0.1.0”,
“bluebird”: “^3.5.1”,
“css-loader”: “^0.28.7”,
“echarts”: “^3.7.2”,
},
“devDependencies”: {
“babel-core”: “^6.26.0”,
“babel-loader”: “^6.4.1”,
“babel-plugin-transform-class-properties”: “^6.24.1”,
“babel-plugin-transform-runtime”: “^6.23.0”,
“babel-polyfill”: “^6.26.0”,
“babel-preset-es2015”: “^6.24.1”,
“webpack”: “^1.12.13”,
“webpack-hot-middleware”: “^2.21.0”
},
2、devDependencies
(1)内容:是一个对象,配置模块依赖的模块列表,key是模块名称,value是版本范围
(2)作用:该模块中所列举的插件属于开发环境的依赖(比如:测试或者文档框架等)
(3)部署来源:通过你npm install进行依赖安装时加上-save-dev,devDependencies对象中便会增加echarts安装配置,实例安装echarts依赖代码如下
npm install echarts -save-dev
3、dependencies

(1)内容:是一个对象,配置模块依赖的模块列表,key是模块名称,value是版本范围
(2)作用:该模块中所列举的插件属于生产环境的依赖(程序正常运行需要加载的依赖)
(3)部署来源:通过你npm install进行依赖安装时加上-save,dependencies对象中便会增加echarts安装配置,实例安装echarts依赖代码如下
npm install echarts -save
4、安装依赖
(1)如果拿到别人的项目,需要安装之前package.json中devdependencies 和 dependencies两个模块下所列举的依赖,可以通过执行以下命令实现
npm install
(2)如果拿到别人的项目,只需要安装之前package.json中dependencies 模块下所列举的依赖,可以通过执行以下命令实现
npm install packagename
(3)如果拿到别人的项目,只需要安装之前package.json中devdependencies 模块下所列举的依赖,可以通过执行以下命令实现
npm install packagename -dev
5、npm uninstall-删除依赖
(1)npm uninstall “依赖名称”:删除依赖,但不会删除package.json的配置(即通过npm install依然可以安装该依赖),删除echarts依赖实例代码如下
npm uninstall echarts
(2)npm uninstall “依赖名称”  --save-dev:删除依赖,同时删除package.json中devdependencies 的配置,删除echarts依赖实例代码如下
npm uninstall echarts --save-dev
(3)npm uninstall “依赖名称”  --save:删除依赖,同时删除package.json中dependencies 的配置,删除echarts依赖实例代码如下
npm uninstall echarts --save
6、友情提示
(1)编程中,如果自己需要某一依赖,在安装时一定要使用npm install echarts -save或npm install echarts -save-dev,即将依赖配置到package.json中对应的对象中,而非简单使用npm install echarts命令(可以正常安装依赖,但不会配置到package.json文件中),因为如果是协作编程,package.json中没有相关配置,其他协作人员的项目不能正常运行后不能通过npm install正确安装依赖,别人也并不知道你安装了什么依赖,这样就会大大影响协作编程的效率
————————————————
版权声明:本文为优快云博主「只如初见0706」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/zrcj0706/article/details/79178371

<think>嗯,用户问的是package.json里的devDependenciesdependencies有什么区别。这个问题我之前学过,不过得仔细想想才能讲清楚。首先,我得回忆一下Node.jsnpm的基础知识。package.json文件是用来管理项目依赖的,对吧?里面会有很多字段,其中这两个依赖项是比较关键的。 首先,dependencies是生产环境需要的依赖。比如项目运行时必须的库,像express或者react这些,用户在使用应用的时候必须要有这些包才能运行。那devDependencies应该是开发环境需要的,只在开发过程中使用,比如测试框架、构建工具之类的,比如webpack或者jest。这些在用户安装的时候,如果使用npm install --production的话就不会安装devDependencies,这样可以减少不必要的体积。 不过,用户可能不太清楚什么时候该放在哪个里面。比如说,有些工具可能在构建阶段需要,但是运行时不需要,这时候就应该放在devDependencies里。另外,有时候可能会有混淆,比如babel这样的工具,通常在开发时使用,所以应该作为devDependency。而像react这种库,是运行时需要的,所以放在dependencies里。 另外,安装依赖的时候,使用--save-dev参数会添加到devDependencies,而默认的--save会添加到dependencies。不过现在npm install默认会保存到dependencies,需要明确区分的话得注意参数的使用。 可能用户的实际场景是他们在自己的项目里遇到了依赖分类的问题,或者看到别人的package.json里有这样的区分,想要了解如何正确使用。也有可能在部署的时候发现某些依赖缺失,或者安装了一些不必要的包,所以需要明确这两个字段的作用。 需要举例子说明可能更好理解。比如,开发一个web应用,使用express作为服务器,所以在dependencies里。而用mocha做测试,应该放在devDependencies里。这样当别人clone项目后,运行npm install会安装所有依赖,但如果是在生产环境,可能只需要安装dependencies里的包。 另外,需要注意有些情况下,即使某些包在开发时使用,但如果构建过程需要它们,比如某些转译工具在构建时需要,但构建后的代码不需要,这时候也应该放在devDependencies里。而如果构建后的代码运行时需要某个包,那可能还是得放在dependencies里,这取决于具体的使用方式。 可能还要提到peerDependenciesoptionalDependencies,但用户没问,所以暂时不需要展开。重点在于区分dev普通依赖的不同使用场景安装方式。 总结下来,需要分清楚开发生产环境的需求,正确分类依赖,以便优化安装过程减少不必要的依赖问题。</think>在 Node.js 项目中,`package.json` 文件中的 `devDependencies` `dependencies` 都是用于管理项目依赖项的配置字段,它们的核心区别在于**使用场景****安装方式**: --- ### 📦 **dependencies(生产依赖)** - **用途**:项目运行时**必须**的依赖包(即用户使用你的应用时需要安装的库) - **示例**:`express`, `react`, `lodash`(运行时核心库) - **安装方式**: ```bash npm install <package_name> --save # 或简写(npm 5+ 默认行为) npm install <package_name> ``` --- ### 🔧 **devDependencies(开发依赖)** - **用途**:**仅在开发阶段**需要的工具包(测试、构建、代码检查等) - **示例**:`webpack`, `jest`, `eslint`(开发工具) - **安装方式**: ```bash npm install <package_name> --save-dev ``` --- ### 🔑 关键区别 | 特性 | dependencies | devDependencies | |--------------------|-----------------------|-------------------------| | **运行时是否需要** | ✅ 必须 | ❌ 不需要 | | **生产环境安装** | 默认安装 | 需显式指定才会安装 | | **典型场景** | 核心功能库 | 构建工具/测试框架 | --- ### 🌰 举个实际例子 假设你开发一个 Web 应用: ```json { "dependencies": { "react": "^18.2.0" // 运行时必须的 UI 库 }, "devDependencies": { "webpack": "^5.75.0" // 仅在构建时使用的打包工具 } } ``` 当用户安装你的包时: ```bash # 生产环境安装(不安装开发依赖) npm install --production # 开发环境安装(安装全部依赖) npm install ``` --- ### ⚠️ 常见误区 1. **依赖混淆**:将开发工具(如 `typescript`)误放入 `dependencies`,会导致生产环境安装冗余包 2. **版本管理**:两者都支持语义化版本控制(如 `^1.0.0`, `~2.3.4`) 3. **依赖传播**:当你的包被其他项目依赖时,`dependencies` 会被自动安装,而 `devDependencies` 不会 建议根据模块的实际用途严格区分,这能有效控制项目体积构建速度。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值