-
Node.js的包管理(module)
- 使用npm install等命令来安装、管理包
- 项目目录的package.json
- 需要放到项目的SCM代码仓库中
- 类似maven的pom文件,是开发者定义依赖包的地方
- 和npm install等命令相互影响。如果直接使用npm install xxx等命令增删改包的使用,会同步到package.json中;如果先改了package.json,然后使用无参数的npm install命令会根据package.json的配置去更新包的引用。
- 版本号匹配符
- 波浪符号(~)与最近的次要版本(中间号码)匹配。〜1.2.3将匹配所有1.2.x版本,但将错过1.3.0。
- 插入符号()更放松。它会更新你最近的主要版本(第一个数字)。 1.2.3将匹配任何1.x.x版本,包括1.3.0,但会在2.0.0上停止。
- 项目目录的package.lock.json
- 不需要放到项目的SCM代码仓库中
- 当前项目根据package.json的配置去npm install后的状况;会显示真实安装时各包之间的依赖关系;还包含一些和缓存目录中的包一致的sha1值用于判断是否需要重新下载,还是可以直接从缓存中拿。
- package-lock.json是当 node_modules 或 package.json发生变化时自动生成的文件。这个文件主要功能是确定当前安装的包的依赖,以便后续重新安装的时候生成相同的依赖,而忽略项目开发过程中有些依赖已经发生的更新
- sha1值
NPM install之后会计算每个包的sha1值,然后将包与他的sha1值关联保存在package.lock.json里面
- 下次NPM install的时候会根据package.lock.json里面保存的sha1值去缓存目录里面寻找包文件,如果存在,就不用再次从网上下载安装包了
- 和package.json的关系
- npm 5.0.x:不管package.json怎么变,npm install 时都会根据package-lock.json文件下载;
- npm 5.1.x:npm install 会无视package-lock.json文件,去下载最新的包;
- npm 5.4.2后:如果改了package.json,且package.json和package-lock.json文件不同,那么npm install 时npm会根据package中的版本号以及语义含义去下载最新的包,并更新至lock。如果两者是同一状态,那么npm install 都会根据lock下载,不会理会package实际包的版本是否有更新。
- 项目目录的node_modules目录
- 不需要放到项目的SCM代码仓库中
- npm install后,当前项目真实依赖的包
- 会有源码
- npm cache缓存
- NPM会把所有下载的包保存,可以使用npm config get cache命令来查看位置,默认一般放在用户文件夹下面,比如C:Users{{username}}AppDataRoaming
pm-cache目录下面
- 可以使用npm cache clean --force清除该目录中的内容
- npm@5 之后,cache clean 只会清除该缓存目录下的 _cacahce 子目录,而忽视不在该子目录的缓存。
- 如果该目录中已经有想要的版本的包了,那么npm install就不会去网上再下载了,而是直接放到项目的node_modules目录中,npm install的输出中也会提到哪些是从缓存中取的。
- 注意
- NPM不同版本算出来的sha1貌似不完全一样,所以直接用别人的package.lock.json会报sha1不匹配的error
- 处理包找不到(有时很奇怪,可能是node升级了大版本引起的,需要删掉node_modules目录)、sha1不匹配等包的安装问题
- 重新整个项目npm install
- 还不行就删掉node_modules目录再重新npm install(有时候node_modules目录东西太多,可以先重命名一下就可以重新npm install了)
- 再不行就删掉package.lock.json,清除缓存npm cache clear --force,删掉node_modules,然后再npm install
-
相关阅读:
python写的百度贴吧相册下载
C#的图片拼接
删除目录下的所有".svn"文件
centOS 6.5 yum升级 gcc4.8 然后又退回来4.4
代理的分类简述特点
GCC 特性整理
纯C 实现 strpos substr strspilt str_trim
编译putty 源码去掉 Are you sure you want to close this session? 提示
OpenWrt tcpdump 抓包
安卓 打飞机 app 开发 第一篇
-
原文地址:https://www.cnblogs.com/wyp1988/p/13267882.html
Copyright © 2020-2023
润新知