1:npm:
什么是npm?
1:npm是一个网站/软件,官网:npmjs.com
2:npm也是一个命令行工具/包管理工具
只要安装了node那么默认就安装npm。
npm也有版本这个概念,可以在命令行中输入:npm --version来查看npm的版本
升级npm:npm install --global npm
npm常用命令:
npm init : 生成package.json文件
npm init -y : 跳过向导快速生成package-lock.json文件
npm install 包名 : 安装包,下载依赖包
npm install 包名 --save :下载包并保存依赖项(package.json文件中的dependecles选项)
npm uninstall 包名 : 只删除依赖包,如果有依赖项依旧会存在
npm uninstall --save : 删除依赖包,同时删除依赖项
npm help :查看npm帮助
解决npm慢的问题:
npm存储包文件的服务器在国外,有时候会被墙,所以速度很慢,我们可以通过淘宝镜像来解决此问题
http://npm.taobao.org
安装包时将npm替换为cnpm即可。
2:package.json文件
一般每个项目的根目录下面都会有一个package.json文件,这个文件定义了项目所需要的各种模块/包,以及项目的配置信息(比如名称、版本、许可证等)。npm install 命令根据这个配置文件,自动下载所需的模块/包,也就是配置项目所需的运行和开发环境。当执行npm install 命令时ndoe会先从dependencies内容,然后根据读取的内容与node_modules中的模块进行对比,没有则下载,已有的会检查版本更新。
package.json文件只记录npm install 方式安装的模块信息,不会记录这些模块依赖的包。例如我们安装了express,在package.json中只会记录express的信息,而express又依赖了其他的一些包,此事package.json是不会记载express依赖包的信息。
package.json文件示例:
scripts
指定了运行脚本命令的npm命令行缩写,比如start指定了运行npm run start
时,所要执行的命令。
dependencies
和devDependencies
,分别指定了项目运行所依赖的模块、项目开发所需要的模块。
bin
项用来指定各个内部命令对应的可执行文件的位置。
engines
指明了该项目所需要的node.js
版本、npm版本。
如何生成package.json文件?
cd至项目根目录下输入命令:npm init 生成package.json文件。
3:package-lock.json文件:
package-lock.json文件只有npm5之后才有,package-lock.json
是当 安装包,node_modules
或 package.json
发生变化时自动生成的文件。在npm5
之后的版本不需要添加— — save
,它就会自动保存这个依赖信息。
这个文件主要功能是确定当前安装的包的依赖
,以便后续重新安装
的时候 生成相同的依赖,而忽略项目开发过程中有些依赖已经发生的更新
。
package-lock.json
文件锁定
所有模块的版本号
,包括主模块和所有依赖子模块
,当执行npm install
的时候,node
从package.json
文件读取模块名称
,从package-lock.json
文件中获取版本号,然后进行下载或者更新
例如:我们使用了jquery1.x版本,如果没有锁定版本,npm install时会自动安装最新版,jq1.x版本和jq2.x版本是有重大差异的,此时自动安装2.x版本可能会导致某些问题。
package-lock.json文件示例: