前言
简介:
node的包管理器,它随nodejs一起安装,即你安装了nodejs就可以用npm进行包管理,通过npm可以从npm服务器下载别人上传的第三方库,下载并安装别人上传的命令行程序,上传自己写的第三方库和命令行程序
可用npm -v
查看npm版本号确定npm是否可用,如果npm版本过低,可以使用npm -install npm -g
进行升级
package.json:
package.json是项目的配置文件,npm会按照package.json中的配置进行包的安装和更新,package中有内容主要是项目名称name,版本version,拥有者author,证书license,依赖dependencies,开发环境依赖devdependencies等,更新包时,每次都按照package.json都下载大版本相同的最新包
package-lock.json:
package-lock.json中固定依赖包的版本到当前所用的包版本号,而不是只固定大版号,这样可以避免有些包虽然大版本号相同,但是接口不兼容。
1、 安装包
1.0 安装
$ npm install <packageName>
$ npm install <packageName> --force
$ npm install <packageName> [-g||-global] [--save -dev]
- 机制:安装前npm install会先检查node_modules目录里是否已经存在包,如果无则安装,如果有无论远程仓库有没有最新版本都不安装,若希望无论是否存在都重新安装,则强制安装:
npm install (包名) --f/--force
1.1 全局安装:
npm install < packageName> -g || -global
-
参数 -g / -global 代表安装到全局环境中,即包安装在Node安装目录下的node_modules文件夹中,一般在
\Users\用户名\AppData\Roaming\npm\node_modules
,并且写入系统环境变量,可以通过命令行在任何位置调用它,一般全局安装的是有命令行需求的packge
1.2 本地安装:
npm install package-name || npm install package-name --save -dev
- 本地安装,包安装在当前定位目录的node_modules文件夹下,通过require()调用,一般安装在本地的是仅该项目需要的包
- 参数--save 的含义是代表把你的安装包信息写入package.json文件
- -dev 将安装包信息写入devDependencies字段中,如果不使用-dev则信息写入Dependencies字段中
- 注:使用packge.json是因为npm安装的包很大,所以不加入版本管理,将包版本信息加入package.json进行版本管理,npm根据该信息进行包版本管理
1.3 package-lock.json
执行npm install 的时候之后项目中会增加一个package.json文件
2、 其余常用命令行
2.1 更新已经安装包
$ npm update <packageName>
- 机制:先查询远程仓库最新版本,再查询本地版本,若不是最新则更新
2.2查看npm的帮助
$ npm help
2.3 查看已经安装的包列表
$ npm list
2.4 初始化 package.json 文件
npm init
初始化生成一个新的 package.json 文件。它会向用户提问一系列问题,如果你觉得不用修改默认配置,一路回车就可以了。如果使用了 -f(代表force)、-y(代表yes),则跳过提问阶段,直接生成一个新的package.json 文件。
3、淘宝镜像cnpm
npm 安装包的过程就是从http://registry.npmjs.org网站 上进行下载和安装,但是用于该网站在国外,国内进行安装速度一般比较慢,所以淘宝团队搭建了一个镜像服务器http://npm.taobao.org ,该服务器每十分钟进行一次更新,完全复刻国外的服务器,但是不能上传包,只能下载安装更新
配置淘宝镜像:
npm install cnpm -g -registy="http://npm.taobao.org"
配置完成之后可以用cnpm代替npm进行安装包,配置完后检查是否配置成功
cnpm -v
4、npm与yarn
yarn诞生比较晚,但诞生之后就迅速受到热捧,并在github上得到start超过npm,yarn一开始是为了解决npm语义版本控制导致安装不确定性的问题
待续
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。