npm包管理工具
npm(全称 Node Package Manager,即node包管理器)Node.js默认的、JavaScript编写的软件包管理系统。
npm常见命令
# 项目开发相关
npm init # 在项目根目录下,创建一个 package.json 文件,需要填写一些内容
npm init -y # 在 package.json 文件中全部使用默认选项npm install <packageName> # 安装 项目内部局部包,项目开发依赖包
npm install -g <packageName> # 安装 本地全局环境包,多为 命令行程序npm update <packageName> # 对项目内单个依赖包升级
npm update -g <packageName> # 更新全局的软件包
npm install -g npm to update # 更新升级npm
npm -g outdated # 使用此命令可以查看哪些包有更新npm uninstall <packageName> # 卸载本地(local)软件包
npm uninstall -g <packageName> # 卸载全局(global)软件包npm list # 查看本地(local)软件包列表
npm list -g # 查看系统中全局安装过的软件包npm config list # 显示npm相关信息# npm 发包相关
npm adduser # 创建一个 npm 账号(Username,Password,Email)
npm login # 登录 npm 仓库账号(Username,Password)
npm publish # 发布自己的包到 npm,或者 更新已有的 npm 包
npm link # 将本地开发包挂载到全局环境,可作为全局命令使用
npm常见参数
-g, --global:安装全局依赖,如果没有指定依赖包名,则将当前目录中的包安装至全局
-S, --save:安装依赖的同时将该依赖写入 dependencies
-D, –-save-dev:安装依赖的同时将该依赖写入 devDependencies
-O, --save-optional:安装依赖的同时将该依赖写入 optionalDependencies
-E, --save-exact:写入 package.json 时带有确切版本号
–no-optional:不安装 optional dependencies,可继承
dependencies是运行时依赖,发布后,发布后即生产环境还需要用的依赖
devDependencies是开发时依赖,发布时不需要使用。比如测试工具、代码检查。
默认情况下同时安装
package.json
package.json
用来描述项目于信息及项目中所依赖的信息模块
package.json 配置文件中常见的字段:
name:包的名称。必填。
version:包的版本号。必填。
description:包的描述信息。
keywords:包的关键字。其他人可以通过关键字搜索到对应的包。
author:作者(项目开源发布时使用)。
license:开源协议(项目开源发布时使用)。
private:记录当前包是否是私有的。当属性值为 true 时,npm 是无法发布该包的,这是为了防止私有的包被发布出去。
main:指定包的入口文件。
scripts:用于配置一些脚本命令,以 key/value 的形式。配置后就可以通过 npm run key命令 来运行后面配置的 value 脚本。
依赖包符号的含义
~
会匹配最近的小版本依赖包,比如 ~1.2.3 会匹配所有 1.2.x 版本,但是不包括 1.3.0
^
会匹配最新的大版本依赖包,比如 ^1.2.3 会匹配所有 1.x.x 的包,包括 1.3.0,但是不包括 2.0.0
*
安装最新版本的依赖包,比如 *1.2.3 会匹配 x.x.x
"dependencies": {"md5": "^2.1.0" # ^ 表示如果直接npm install 将会安装 md5 2.*.*的最新版本
}
"dependencies": {"md5": "~2.1.0" # ~ 表示如果直接npm install 将会安装 md5 2.1.* 的最新版本
}
"dependencies": { "md5": "*" # * 表示如果直接npm install 将会直接安装 md5的最新版本
}
package-lock.json
package.json
的dependencies
和devDependencies
只单纯记录本项目中的的依赖,无法保证依赖环境的一致。所以,在npmV5版本引入package-lock.json
解决多人开发安装的依赖版本不一样的问题。
package-lock.json
是保证依赖树版本的锁定。package-lock.json精准记录并锁定版本号及其子版本号。
npx
临时下载软件包执行完成后删除
有些命令的软件包我们使用频率并不高,比如create-react-app脚手架工具,我们可以临时下载,创建后删除,就不会占用磁盘空间
npx create-react-app react-test