logo头像
Snippet 博客主题

npm包管理机制

一 package.json

  • 组成:
  • Dependencies依赖包支持的配置格式:
  1. "core-js": "^1.1.5" 指定版本号,去npm服务器下载包
  2. "test2-js": "http://cdn.com/test2-js.tar.gz" 一个可下载的压缩包地址,去下载并解压安装
  3. "antd": "ant-design/ant-design#4.0.0-alpha.8" github用户名/仓库名[#tag/commitid]这种格式
  4. git ulr形式下载安装,如:
    git+https://github.com/itwmike/axios.git
    git+ssh://git@github.com:itwmike/axios.git
  • devDependencies属性与dependencies区别,dev是开发环境,只在开发环境使用,用户使用你的包时即使不安装这些依赖也可以正常运行,npm install时也会被安装和管理,但是不会被安装到生产环境。

  • scripts 用于配置一些脚本命令的缩写,各个脚本可以互相组合使用,这些脚本可以覆盖整个项目的生命周期,配置后可使用 npm run command 进行调用。如果是 npm 关键字,则可以直接调用。

二 npm包管理

  • npm view xxx version/versions 查看某个包最新版本/所有发布的版本

  • ~: 当安装依赖时获取到有新版本时,安装到 x.y.z 中 z 的最新的版本。即保持主版本号、次版本号不变的情况下,保持修订号的最新版本。

    ^: 当安装依赖时获取到有新版本时,安装到 x.y.z 中 y 和 z 都为最新版本。即保持主版本号不变的情况下,保持次版本号、修订版本号为最新版本。

  • package-lock.json文件,锁定依赖版本意味着在我们不手动执行更新的情况下,每次安装依赖都会安装固定版本。保证整个团队使用版本号一致的依赖。

  • 使用 npm outdated 可以帮助我们列出有哪些还没有升级到最新版本的依赖:

    黄色表示不符合我们指定的语意化版本范围 - 不需要升级

    红色表示符合指定的语意化版本范围 - 需要升级

    执行 npm update 会升级所有的红色依赖。

  • 依赖变更

    升级依赖: 修改 package.json文件的依赖版本,执行 npm install。

    降级依赖: 执行 npm install package@version, 重新安装(改动package.json不会对依赖进行降级)。

    注意改动依赖后提交lock文件

npm install执行原理

  • 在执行 npm install 或 npm update命令下载依赖后,除了将依赖包安装在node_modules 目录下外,还会在本地的缓存目录缓存一份。查看缓存目录命令:npm config get cache

  • npm 提供了几个命令来管理缓存数据:

    npm cache add:官方解释说这个命令主要是 npm 内部使用,但是也可以用来手动给一个指定的 package 添加缓存。

    npm cache clean:删除缓存目录下的所有数据,为了保证缓存数据的完整性,需要加上 –force 参数。

    npm cache verify:验证缓存数据的有效性和完整性,清理垃圾数据。

    yarn

    • yarn 是在 2016 年发布的,那时 npm 还处于 V3 时期,那时候还没有 package-lock.json 文件,就像上面我们提到的:不稳定性、安装速度慢等缺点经常会受到广大开发者吐槽。此时,yarn 诞生.

    • yarn也有yarn.lock文件,原理大致和npm的一致,只是yarn.lock 中子依赖的版本号不是固定的,意味着单独一个 yarn.lock 确定不了 node_modules 目录结构,还需要和 package.json 文件进行配合。而 package-lock.json 只需要一个文件即可确定。

    • 查看缓存目录:yarn cache dir
      删除缓存:yarn cache clean