npm学习笔记

依赖包的版本限制

我们通常在package.json文件中看到如下:

"dependencies": {
    "express": "^4.16.3",
    "lodash": "^4.17.10"
}

key 是依赖的包名称,value 是这个包的版本。那版本前面的 ^ 或者版本直接是一个 * 是什么意思呢?

这就需要先了解 npm 包提供者应该注意的版本号规范。

如果一个项目打算与别人分享,应该从 1.0.0 版本开始。以后要升级版本应该遵循以下标准:

  • 补丁版本:解决了 Bug 或者一些较小的更改,增加最后一位数字,比如 1.0.1
  • 小版本:增加了新特性,同时不会影响之前的版本,增加中间一位数字,比如 1.1.0
  • 大版本:大改版,无法兼容之前的,增加第一位数字,比如 2.0.0

了解了提供者的版本规范后, npm 包使用者就可以针对自己的需要填写依赖包的版本规则。

作为使用者,我们可以在 package.json 文件中写明我们可以接受这个包的更新程度(假设当前依赖的是 1.0.4 版本):

  1. 如果只打算接受补丁版本的更新(也就是最后一位的改变),就可以这么写:
    "1.0"
    "1.0.x"
    "~1.0.4"
  2. 如果接受小版本的更新(第二位的改变),就可以这么写:
    "1"
    "1.x"
    "^1.0.4"
  3. 如果可以接受大版本的更新(自然接受小版本和补丁版本的改变),就可以这么写:
    " * "
    " x "
小结一下:总共三种版本变化类型,接受依赖包哪种类型的更新,就把版本号准确写到前一位。

package.json

管理本地安装 npm 包的最好方式就是创建 package.json 文件。

一个 package.json 文件可以有以下几点作用:
1. 作为一个描述文件,描述了你的项目依赖哪些包
2. 允许我们使用 “语义化版本规则”指明你项目依赖包的版本
3. 让你的构建更好地与其他开发者分享,便于重复使用
4. 如果当前项目有 package.json 文件,下载包时会下载这个文件中指定的版本; 
如果当前项目中没有 package.json 文件,就会下载指定包的最新版本。

创建:使用 npm init 即可在当前目录创建一个 package.json 文件

有时下载会报错:npm install error saveError ENOENT: no such file or directory, open '/Users/zhangshixin/package.json'
解决办法:

  • 在目录下执行 npm init 创建 package.json,输入初始化信息
  • 然后再执行下载命令

npm update 的工作过程:
  • 先到远程仓库查询最新版本
  • 然后对比本地版本,如果本地版本不存在,或者远程版本较新
  • 查看 package.json 中对应的语义版本规则
  • 如果当前新版本符合语义规则,就更新,否则不更新

install
  • npm uninstall express时,被卸载的包的依赖包也同时被卸载
  • npm install packname时,会更新package-lock.json和node-modules,如果没有这俩文件的时候会先创建,即第一次install的时候会自动生成这俩文件(夹)

你可能感兴趣的:(npm学习笔记)