关于npm你了解多少?

213 阅读3分钟

R-C.jfif

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第一天,点击查看活动详情

相信很多前端开发者在日常开发中经常与npm打交道,但是你真的了解npm吗?本文讲带你重新认识npm。

npm vs yarn

  1. 首先我们要知道npm是在yarn之前就有的,那为什么会有yarn的出现呢?
  • 每当 Yarn 或 npm 需要安装包时,它们都会执行一系列任务。在 npm 中,这些任务是按包顺序执行的,这意味着它会等待一个包完全安装,然后再继续下一个。相比之下,Yarn 并行执行这些任务,从而提高了性能。
  1. 生成锁定文件
  • yarn的出现带来了yarn.lock文件,这个文件可以帮助我们在固定依赖包的版本号,这样我们就不会出现在另一台机器安装包的时候安装不同版本的情况。而npm也在yarn的之后增加了package.lock.json。功能类似。
  1. 命令对比
  • ​​npm install​| ​yarn​​: 安装依赖
  • npm install [package]​| ​yarn add [package]​: 安装一个包
  • npm install --save-dev [package]​| ​yarn add - -dev [package]​: 安装一个包作为开发依赖
  • npm uninstall [package]​| ​yarn remove [package]​: 卸载一个包
  • npm uninstall --save-dev [package]​| ​yarn remove [package]​: 卸载开发依赖包
  • npm update​| ​yarn upgrade​: 更新依赖
  • npm update [package]​| ​yarn upgrade [package]​: 更新一个包

npm中的版本号

major.minor.patch分别代表主版本号.次版本号.修补版本号。

如下图:

微信截图_20220331221102.png

  • ~6.7.1表示匹配所有的6.7.x
  • ^4.1.2表示匹配所有的4.x.x
  • *表示安装最新的版本
  • 直接写例如6.6.6就是特定的版本号

更新或者安装有以下方式:

  • npm install 忽略模糊版本
  • npm update 更新模糊版本至最新

devDependencies vs dependencies真的一样吗

首先我们了解一下npm install的作用: 将依赖项安装在本地node_modules文件夹中。

在全局模式下(即,在命令后附加-g或--global),它将当前程序包上下文(即当前工作目录)安装为全局程序包。

默认情况下,npm install将安装所有列为package.json中的依赖项的模块。

使用--production标志(或将NODE_ENV环境变量设置为production时),npm将不会安装devDependencies中列出的模块。

要在NODE_ENV环境变量设置为production时安装dependenciesdevDependencies中列出的所有模块,可以使用--production = false。

  1. 要向你的package.json's添加条目dependencies
npm install <package_name> --save
npm install <package_name> -S
  1. 要向你的package.json's添加条目devDependencies
npm install <package_name> --save-dev
npm install <package_name> -D
  1. 如果npm的时候都不加的话那么只会安装到dependencies下

我们执行npm install的时候会默认安装devDependencies和dependencies中的所有依赖。所以-S或者-D都无所谓?其实不然。

  • 对于dependencies中的包,我们自己npm的时候会下载最新的包,如果是别人引用我的的包的时候也会下载下来。
  • 但是对于devDependencies中的包,别人引用我们的包的时候不会被下载。

好了以上就是我对于npm的一些介绍,看了本文你又收获了多少呢?欢迎评论区指正或者讨论哦~