目前市面上大部分的前端项目使用 npm
包管理器来组织项目中用到的模块依赖。但咱们去看 npm
配置文件 package.json
的时候,发现有些模块放在 dependencies
配置中,还有一些模块放在 devDependencies
中,是否是有点傻傻分不清楚🧐。前端
莫慌,先概览下 npm
中的 5 种依赖,内心有个底:react
npm pack
命令生成一个模块包dependencies
同样,但该模块无关紧要(ps. 该配置命名也很直观🤐)详细介绍往下看 👇ios
该配置项用来放置一些项目中实际运行须要用到的代码,若是没有该模块,项目会运行出错,那就必需要安装在 dependencies
下面。typescript
经过如下命令进行安装shell
# 以 axios(客户端/服务端请求工具) 为例 # 经过 npm 安装 $ npm install --save axios # 经过 yarn 安装 $ yarn add axios
该配置项放置本地开发过程当中须要使用到的编译、打包、测试、格式化模块等,特别注意: npm publish
的时候不会安装该配置下的模块npm
经过如下命令安装json
# 以 typescript (解析 ts/tsx 文件的工具) 为例 # 经过 npm 安装 $ npm install --save-dev typescript # 经过 yarn 安装 $ yarn add -D typescript
通常用在发布的代码库当中,表示须要宿主环境提供该配置下的模块依赖,与宿主环境息息相关。npm 3.x 版本以后不会自动安装该配置下的依赖模块,会告警提示。axios
// 以 react-router (react 路由库) 的官方库为例,react-router 须要在 react 环境中使用 { "peerDependencies": { "react": ">=15" } }
该配置下的模块经过 npm pack
会被打包到生成的模块包中,通常用于私密包引用,把文件配置到其余项目的依赖中数组
特别注意: 该配置是数组格式,包含须要被打包的包名。react-router
该配置如其名,无关紧要的配置,也就是说在代码运行或安装模块的时候,就算失败报错了也会正常运行,我的理解应该是有提高效益的模块安装在这里,若是失败了也不影响代码的正常运行。
特别注意: 该配置会覆盖掉 dependencies
里的包,不要重复添加
经过如下命令安装
# 经过 npm 安装 $ npm install --save-optional xxx # 经过 yarn 安装 $ yarn add -O xxx
项目中用到最多的是 dependencies
和 devDependencies
,其余的知道就OK。无论怎样,如今对 npm
里的依赖有了更深入的了解了吧!
加油,learn on the way ~