面试题答案
一键面试安装速度
- npm:npm 在安装依赖时,默认是串行安装,即一个包安装完成后再安装下一个包,这在依赖包较多时,安装时间会相对较长。例如,项目有大量嵌套依赖,npm 需逐个处理,耗时增加。
- yarn:yarn 采用并行安装策略,能同时安装多个依赖包,大大提升安装速度。尤其是在项目依赖复杂且数量多的情况下,yarn 安装速度优势明显。比如在安装一个具有多层嵌套依赖的大型项目时,yarn 可比 npm 节省不少时间。
命令差异
- 安装依赖:
- npm:使用
npm install [package-name]
安装指定包,npm install
用于安装项目所有依赖。例如npm install express
安装 Express 框架。 - yarn:使用
yarn add [package-name]
安装指定包,yarn
即可安装项目所有依赖。如yarn add react
安装 React 库。
- npm:使用
- 卸载依赖:
- npm:使用
npm uninstall [package-name]
卸载指定包。比如npm uninstall lodash
卸载 Lodash 库。 - yarn:使用
yarn remove [package-name]
卸载指定包。例如yarn remove moment
卸载 Moment.js 库。
- npm:使用
- 更新依赖:
- npm:使用
npm update [package-name]
更新指定包,npm update
可更新所有包(但有时可能更新不完全或出现版本冲突问题)。例如npm update axios
更新 Axios 库。 - yarn:使用
yarn upgrade [package-name]
更新指定包,yarn upgrade
可更新所有包,yarn 在处理更新时对版本兼容性检查更严格且更新逻辑相对更可靠。如yarn upgrade webpack
更新 Webpack 工具。
- npm:使用
锁文件
- npm:锁文件为
package - lock.json
,它精确记录每个依赖包的版本号以及依赖树中每个包的来源等详细信息。npm 在安装或更新依赖时会自动生成和更新此文件,以确保在不同环境下安装的依赖版本完全一致。例如,当在新环境执行npm install
时,package - lock.json
会保证安装的包版本与之前开发环境完全相同,避免因版本差异导致的兼容性问题。 - yarn:锁文件是
yarn.lock
,同样详细记录了项目依赖包的版本、校验和等信息,目的也是保证依赖安装的一致性。yarn 在安装、添加、移除或更新依赖时也会自动维护该文件。与package - lock.json
类似,yarn.lock
确保在不同机器上运行yarn
安装依赖时,得到相同版本的依赖包集合。