zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Node.js npm npx yarn 包管理器 [MD]

JSnpmNode 管理器 yarn md
2023-09-14 09:00:05 时间

博文地址

我的GitHub 我的博客 我的微信 我的邮箱
baiqiantao baiqiantao bqt20094 baiqiantao@sina.com

目录

Node.js

简介

由于 Node.js 平台是在后端运行 JavaScript 代码,所以,必须首先在本机安装 Node 环境。

  • 下载 Node.js 安装包,一路下一步即可
  • 检测PATH环境变量中是否包含Node所在的路径
  • 查看node的版本:node -v
  • 查看自带的 npm 的版本:npm -v

设置默认全局安装路径

  • 系统变量下新建NODE_PATH,输入全局模块安装路径D:\_dev\node.js\node_global\node_modules
  • 用户变量下的PathC:\Users\用户名\AppData\Roaming\npm修改为D:\_dev\node.js\node_global

默认在执行类似npm install xxx -g的安装语句时,会将安装的模块安装到C:\Users\用户名\AppData\Roaming\npm路径,配置完后,通过此命令安装的模块,会安装在刚才配置的全局模块路径D:\_dev\node.js\node_global\node_modules\xxx中。

当然,如果不加参数 -g,则会安装在当前路径下。

package.json

package.json 位于已安装模块的根目录下,用于定义包(模块)的属性。

  • name:模块名
  • version:模块的版本
  • description:模块的描述
  • homepage:模块的官网 url
  • author:模块作者列表
  • contributors:模块的其他贡献者
  • dependencies:依赖模块列表(如果依赖模块没有安装,npm 会自动安装)
  • repository:模块代码存放仓库,type 可以是 git/svn,url 可以是 Github
  • main:程序的主入口文件(默认值是模块根目录下面的 index.js)
  • keywords:关键字列表

npm

npm(Node Package Manager) 是 Node.js 的包管理工具

为啥我们需要一个包管理工具呢?因为我们在 Node.js 上开发时,会用到很多别人写的 JavaScript 代码。如果我们要使用别人写的某个包,每次都根据名称搜索一下官方网站,下载代码,解压,再使用,非常繁琐。于是一个集中管理的工具应运而生:大家都把自己开发的模块打包后放到 npm 官网上,如果要使用,直接通过 npm 安装就可以直接用,不用管代码存在哪,应该从哪下载。

更重要的是,如果我们要使用模块A,而模块A又依赖于模块B,模块B又依赖于模块X和模块Y,npm 可以根据依赖关系,把所有依赖的包都下载下来并管理起来。否则,靠我们自己手动管理,肯定既麻烦又容易出错。

帮助文档

  • 官方在线帮助文档
  • 本地帮助文档:在 [nodejs 安装目录](file:///C:/_dev/nodejs/node_modules/npm/docs/output/commands/) 或 [node_global 目录](file:///D:/_dev/node.js/node_global/node_modules/npm/docs/output/commands/)
  • [cnpm 的本地帮助文档](file:///D:/_dev/node.js/node_global/node_modules/cnpm/node_modules/npm/docs/public/cli-commands/npm/index.html)
npm -h                     # 即 npm help,查看帮助文档
npm <command> -h           # 查看指定命令的帮助文档
npm -l                     # 显示所有命令的帮助文档
npm help <term>            # 在本地搜索指定主题的帮助文档,并在浏览器中打开

常用命令

npm -v                     # 查看 npm 版本
npm ls -g                  # 【list/la/ll】查看全局已安装的模块
npm ls -g xxx              # 查看指定模块本地安装路径、版本号
npm root -g                # 查看全局的包的安装路径
~/.npmrc                   # 打开配置文件,路径为【C:\Users\白乾涛\.npmrc】

npm i -g xxx               # 【install/add】安装(更新)指定模块,也可以更新自己
npm i -g xxx@yyy           # 更新到指定版本
npm un xxx                 # 【uninstall/remove/rm/r】卸载模块
npm update -g xxx          # 【up/upgrade】更新全局模块
npm cache clear            # 清空本地缓存

npm search xxx             # 【s/se/find】搜索模块,如果使用了淘宝镜像,可能会报404
npm view xxx               # 【info/show/v】查看此模块的版本、依赖、描述、官网等信息
npm view xxx description   # 查看具体某一项信息,如 name/version,具体 key 来自于 package.json

安装时的参数

  • -g:【--global】全局安装,仅供命令行使用,代码中不直接通过require()的方式调用全局安装的包
  • -S:【--save】安装到生产环境,包名会被注册在 package.json 里面的 dependencies
  • -D:【--save-dev】仅安装到开发环境,注册在 devDependencies,一般都是辅助工具,如 babel、webpack
  • 两者都不写:包名不会进入 package.json 里面,因此别人不知道你安装了这个包

全部可用的命令

access, adduser, audit,
bin, bugs,
cache, ci, completion, config,
dedupe, deprecate, diff, dist-tag, docs, doctor,
edit, exec, explain, explore,
find-dupes, fund,
get,
help, hook,
init, install, install-ci-test, install-test, link,
ll, login, logout, ls,
org, outdated, owner,
pack, ping, pkg, prefix, profile, prune, publish,
rebuild, repo, restart, root, run-script,
search, set, set-script, shrinkwrap, star, stars, start, stop,
team, test, token,
uninstall, unpublish, unstar, update,
version, view,
whoami

npm config

npm config

npm config list              # 查看自定义的配置【C:\Users\白乾涛\.npmrc】
npm config list -l           # 查看所有默认的配置,被修改的部分会加注释说明

npm config get xxx           # 查看指定项的配置
npm config set xxx           # 修改指定项的配置
npm config delete xxx        # 删除指定项的配置
npm config edit              # 打开用户的配置文件 C:\Users\白乾涛\.npmrc
npm config edit -g           # 打开全的局配置文件 \node_global\etc\npmrc

npm config set prefix "D:\_dev\node.js\node_global"        # 安装模块默认路径
npm config set cache "D:\_dev\node.js\node_cache"          # 缓存路径
npm config set registry https://registry.npm.taobao.org    # 设置淘宝镜像

cnpm

cnpm 是淘宝维护的 China npm(虽然垃圾淘宝后来明确将其定义为 Company npm)。

  • npmjs.com:是官方的 npm 仓库,registry 为 https://registry.npmjs.org/
  • npmmirror.com:是淘宝维护的、专门针对国人的镜像,registry 为 https://registry.npmmirror.com
  • npm.taobao.org:是npmmirror.com的另一个马甲,registry 为 https://registry.npm.taobao.org/
  • cnpmjs.org:是淘宝维护的、专门用来跪舔歪果仁的镜像,registry 为 http://r.cnpmjs.org/
npm install cnpm -g                                             # 安装 cnpm 并使用官方镜像
npm install cnpm -g --registry=https://registry.npmmirror.com   # 安装 cnpm 并使用 cnpmjs 镜像
npm config set registry https://registry.npm.taobao.org         # 默认设置淘宝镜像

npm install xxx --registry=https://registry.npm.taobao.org      # 临时使用淘宝镜像
npm search xxx --registry=https://registry.npmjs.org            # 临时使用官方镜像

使用淘宝镜像后,某些命令会有问题(例如npm search命令),解决方案:

  • 命令后面添加--registry=https://registry.npmjs.org,即临时改为官方的源
  • 改为使用cnpm

npx

npx 是 npm v5.2.0 引入的一条命令,是 npm 包的执行器,旨在提高从 npm 注册表使用软件包时的体验。

npm 的 m 是 Management,npx 的 x 可以理解为 eXecute

当执行 npx xxx 的时候

  • npx 先看 xxx 在$PATH里有没有
  • 如果没有,找当前目录的 node_modules 里有没有
  • 如果还是没有,就安装这个 xxx 来执行

主要特点:

  • 可以执行依赖包中的命令,安装完成自动运行
  • 临时安装可执行依赖包,不用全局安装,不用担心长期的污染
  • 自动加载 node_modules 中依赖包,不用指定$PATH
  • 可以指定 node 版本、命令的版本

yarn

yarn:Yet Another Resource Negotiator
YAML:Yet Another Markup Language

Fast, reliable, and secure dependency management for JavaScript.

简介及安装

Yarn 是由 Facebook、Google、Exponent 和 Tilde 联合推出的一个用来替代 npm 的包管理工具。

核心优点:安装速度快 --- Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载;同时利用并行下载以最大化资源利用率,因此安装速度更快。

安装

scoop install yarn -g
choco install yarn
yarn -v

请将您的项目目录和 Yarn 的缓存目录 (%LocalAppData%\Yarn) 列入杀毒软件的白名单中,否则会因为每次向磁盘写入文件时而被扫描,导致安装软件包变得很慢。

常用命令

yarn -v                    # 查看版本
yarn global list           # 查看全局安装的包

yarn config list           # 获取当前配置
yarn config get xxx        # 获取指定项配置
yarn config set xxx        # 设置指定项

yarn init                  # 初始化一个新项目
yarn                       # 安装项目的全部依赖
yarn install               # 和省略掉 install 时的效果一样

yarn add [xxx]             # 添加依赖包
yarn global add [xxx]      # 添加全局依赖包
yarn add [xxx]@[yyy]       # 添加指定版本(或tag)的依赖包

yarn add [xxx] --dev       # 将依赖项添加到 devDependencies
yarn add [xxx] --peer      # 将依赖项添加到 peerDependencies
yarn add [xxx] --optional  # 将依赖项添加到 optionalDependencies

yarn upgrade [xxx]         # 升级依赖包
yarn upgrade [xxx]@[yyy]   # 升级到指定版本(或tag)

yarn remove [xxx]          # 移除依赖包

和 npm 常用命令对比

npm init                           --- yarn init
npm install                        --- yarn
npm install xxx@1.1.1 -g           --- yarn global add xxx@1.1.1
npm install xxx@1.1.1 --save       --- yarn add xxx@1.1.1
npm install xxx@1.1.1 --save-dev   --- yarn add xxx@1.1.1 --dev
npm uninstall xxx --save(-dev)     --- yarn remove xxx
npm run xxx                        --- yarn run xxxx

设置

可以通过yarn config list查询当前的配置。

配置文件存放在%HOME%/.yarnrc,内容可以直接修改,我修改后的内容如下:

cache-folder "D:\\_dev\\node.js\\yarn\\cache"
global-folder "D:\\_dev\\node.js\\yarn\\global"
prefix "D:\\_dev\\node.js\\yarn\\global"
yarn-offline-mirror "D:\\_dev\\node.js\\yarn\\mirror"

注意,要记得同步修改 Path 环境变量中的路径,不然用的时候会找不到已安装的模块。

D:\_dev\node.js\yarn\global\node_modules\.bin

也可以通过yarn config set [key] [value]命令修改上述位置,key 值和上面文件中的一致。

在我们使用 global 安装包的时候,会在上面指定的 \yarn\global 下,生成 node_modules\.bin 目录

yarn global dir     # 检查当前全局位置【D:\_dev\node.js\yarn\global】
yarn global bin     # 检查当前全局 bin 位置【D:\_dev\node.js\yarn\global\bin】

2016-11-16