npm包管理机制
一 package.json
- 组成:

- Dependencies依赖包支持的配置格式:
"core-js": "^1.1.5"指定版本号,去npm服务器下载包"test2-js": "http://cdn.com/test2-js.tar.gz"一个可下载的压缩包地址,去下载并解压安装"antd": "ant-design/ant-design#4.0.0-alpha.8"github用户名/仓库名[#tag/commitid]这种格式- git ulr形式下载安装,如:
git+https://github.com/itwmike/axios.gitgit+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 cachenpm 提供了几个命令来管理缓存数据:
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