什么是 NPM

  • NPM(全称Node Package Manager,即node包管理器)
  • 是Node.js默认的、以JavaScript编写的软件包管理系统
  • npm 来分享和使用代码已经成了前端的标配
  • 官网: https://www.npmjs.com
  • npm被全球超过1100万开发人员所依赖
  • 拥有超过一百万个软件包,是世界上最大的软件注册表 20220126175706

安装NPM

  • npm是Node.js默认的软件包管理系统
  • 安装完毕node后,会默认安装好npm
  • npm本身也是基于Node.js开发的软件
  • 下载Node: http://nodejs.cn

NPM 的使用

npm -v   
#通过查看版本,看npm是否安装成功

npm install <Module Name>      
#使用 npm 命令安装模块

npm install <Module Name> -g   
#可以直接在命令行里使用

npm list -g  
#查看所有全局安装的模块

npm list vue 
#查看某个模块的版本号

npm -g install npm@5.9.1  
#(@后跟版本号)这样我们就可以更新npm版本

npm install -save moduleName         
# -save 在package文件的dependencies节点写入依赖。

npm install -save-dev moduleName  
# -save-dev 在package文件的devDependencies节点写入依赖dependencies:运行时的依赖,发布后,即生产环境下还需要用的模块
# devDependencies:开发时的依赖。里面的模块是开发时用的,发布时用不到它,比如项目中使用的 gulp ,压缩css、js的模块。这些模块在我们的项目部署后是不需要的

NPM 镜像的设置与查看

#搭建环境时通过如下代码将npm设置成淘宝镜像
npm config set registry https://registry.npm.taobao.org --global
npm config set disturl https://npm.taobao.org/dist --global

#设置当前地址(设置为默认地址)
npm config set registry https://registry.npmjs.org/

#查看镜像的配置结果
npm config get registry 
npm config get disturl  

#使用nrm工具切换淘宝源
npx nrm use taobao

#如果之后需要切换回官方源可使用
npx nrm use npm

Package.json 属性说明

name - 包名。
version - 包的版本号。
description - 包的描述。
homepage - 包的官网 url 。
author - 包的作者姓名。
contributors - 包的其他贡献者姓名。
dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。
repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。
main - main 字段指定了程序的主入口文件,require('moduleName') 就会加载这个文件。这个字段的默认值是模块根目录下面的 index.js。
keywords - 关键字

NPM 常用命令

NPM提供了很多命令,例如install和publish,使用npm help可查看所有命令。 使用npm help <command>可查看某条命令的详细帮助,例如npm help install。 在package.json所在目录下使用npm install . -g可先在本地安装当前命令行程序,可用于发布前的本地测试。 使用npm update <package>可以把当前目录下node_modules子目录里边的对应模块更新至最新版本。 使用npm update <package> -g可以把全局安装的对应命令行程序更新至最新版。 使用npm cache clear可以清空NPM本地缓存,用于对付使用相同版本号发布新版本代码的人。 使用npm unpublish <package>@<version>可以撤销发布自己发布过的某个版本代码。

包的使用

  • 通过命令行使用 npm 下载和更新包
  • 没有webpack之前搜寻整个 node_modules 目录来定位每个包的路径再手动添加到我们 HTML 文件中(实在太太不方便了)
  • 大多数编程语言都会提供从一个文件导入另一个文件代码的机制。然而 JavaScript 最初设计时并没有这个特性,因为 JavaScript 原本是为了在浏览器端运行而设计的,并没有权限获取计算机客户端的文件系统(安全考虑)。所以很长一段时间以来,组织多个文件的 JavaScript 代码就是把每个文件下载下来,变量是全局共享的。
  • CommonJS 中很大的一部分便是对模块系统的规范,
  • 使用require语句导入包
  • 新的ES6可以使用import导入包

什么是 Yarn

“Yarn是由Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 ,正如官方文档中写的,Yarn 是为了弥补 npm 的一些缺陷而出现的。因为NPM5以下会出现下面的问题:

  • npm install的时候巨慢。特别是新的项目拉下来要等半天,删除node_modules,重新install的时候依旧如此。
  • 同一个项目,多人开发时,由于安装的版本不一致出现bug

官网:www.yarnpkg.com

Yarn 的安装

下载node.js,使用npm安装

npm install -g yarn
yarn --version #查看版本

安装node.js,下载yarn的安装程序: 提供一个.msi文件,在运行时将引导您在Windows上安装Yarn

Yarn 淘宝源安装,分别复制粘贴以下代码行到黑窗口运行即可

yarn config set registry https://registry.npm.taobao.org -g
yarn config set sass_binary_site http://cdn.npm.taobao.org/dist/node-sass -g

Yarn 的基本使用

yarn init                                  #初始化项目   同npm init,执行输入信息后,会生成package.json文件
yarn install                     #安装package.json里所有包,并将包及它的所有依赖项保存进yarn.lock
yarn install --flat         #安装一个包的单一版本
yarn install --force   #强制重新下载所有包
yarn install --production  #只安装dependencies里的包
yarn install --no-lockfile  #不读取或生成yarn.lock
yarn install --pure-lockfile  #不生成yarn.lock
yarn add [package]  # 在当前的项目中添加一个依赖包,会自动更新到package.json和yarn.lock文件中
yarn add [package]@[version] # 安装指定版本,这里指的是主要版本,如果需要精确到小版本,使用-E参数
yarn add [package]@[tag]  # 安装某个tag(比如beta,next或者latest)
yarn add --dev/-D   # 加到 devDependencies
yarn add --peer/-P   # 加到 peerDependencies
yarn add --optional/-O  # 加到 optionalDependencies

#默认安装包的主要版本里的最新版本,下面两个命令可以指定版本:

yarn add --exact/-E   # 安装包的精确版本。例如yarn add foo@1.2.3会接受1.9.1版,但是yarn add foo@1.2.3 --exact只会接受1.2.3版
yarn add --tilde/-T   # 安装包的次要版本里的最新版。例如yarn add foo@1.2.3 --tilde会接受1.2.9,但不接受1.3.0
yarn publish  #发布包
yarn remove <packageName>  #移除一个包,会自动更新package.json和yarn.lock
yarn upgrade # 更新一个依赖 用于更新包到基于规范范围的最新版本
yarn run # 运行脚本 用来执行在 package.json 中 scripts 属性下定义的脚本
yarn info <packageName> # 显示某个包的信息 可以用来查看某个模块的最新版本信息
yarn cache      # 缓存
yarn cache list       # 列出已缓存的每个包 
yarn cache dir   # 返回 全局缓存位置
yarn cache clean  # 清除缓存

Yarn 的优点

速度快 安装版本统一 更简洁的输出 多注册来源处理 更好的语义化

NPM 与 Yarn 的比对

20220126181427