前端构建工具(2) -- npm&yarn

前言

简介:
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语义版本控制导致安装不确定性的问题

待续

    原文作者:yichair
    原文地址: https://segmentfault.com/a/1190000014483625
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞