Pnpm的基本用法

206 阅读1分钟

Pnpm代表performant npm(高性能的npm),同npmYarn,都属于JavaScript包管理安装工具,它较npmYarn在性能上得到很大提升,被称为快速的,节省磁盘空间的包管理工具

安装

可以通过npm安装

$ npm i pnpm -g

验证是否安装成功并查看已安装 pnpm 的版本

$ pnpm -v

环境变量

pnpm 安装完成后,由于特有的模块管理方式,依赖项模块及相关信息默认安装生成在系统盘 C:\Users\<UserName>\AppData\Local 文件夹内,并且使用默认配置无法直接安装全局依赖项。

需要使用自动或手动配置环境变量才可以正常使用。

自动配置

直接运行以下命令,运行pnpm 的独立安装脚本

$ pnpm setup

输出以下信息

Next configuration changes were made:
PNPM_HOME=C:\Users\<UserName>\AppData\Local\pnpm
Path=%PNPM_HOME%;....;

Setup complete. Open a new terminal to start using pnpm.

自动配置环境变量的效果是,全局依赖项安装在系统盘内,工作区依赖项安装在同一磁盘内。

由于默认环境变量配置使用不方便,需要进行一般需要手动配置修改。

手动配置

pnpm 沿用 npm 的配置格式,并通用~/.npmrc的配置方式。

定义目录

.npmrc 文件中补充以下配置,将当前系统项目中所有使用的依赖项、缓存、模块使用记录等统一更新至非系统盘文件夹内。

E 盘为例,以下配置均可使用pnpm config set 进行配置。

global-dir=E:\.pnpm-store\global
global-bin-dir=E:\.pnpm-store\bin
store-dir=E:\.pnpm-store\store
state-dir=E:\.pnpm-store\state
cache-dir=E:\.pnpm-store\cache

其中,各配置含义如下

  • global-dir:全局依赖项安装目录
  • global-bin-dir:全局依赖项 bin 文件安装目录
  • store-dir:项目依赖项安装目录
  • state-dir:配置当前仅由更新检查器使用的 pnpm-state.json 文件的目录
  • cache-dir:缓存存储目录

配置 pnpm 环境变量

  1. 借助 pnpm setup 命令快速生成环境变量基础配置

  2. 调用系统环境变量配置修改自定义值,启动方式是:win+s快捷键 ⇒ 搜索编辑系统环境变量 ⇒ 选择环境变量

  3. 设置PNPM_HOME用户变量映射,对应值为 .npmrc 中的 global-bin-dir 目录地址:

    PNPM_HOME: E:.pnpm-store\bin

  4. 补充设置系统的 Path 变量,添加%PNPM_HOME%

    Path: %PNPM_HOME%;....;

基本使用方式

  1. 项目初始化,生成 package.json 文件

    $ pnpm init

  2. 安装依赖

    pnpm i [pkg]

  3. 运行 package.json 中定义的 scripts 脚本,启动服务即可

    $ pnpm run xxx

cli命令

管理依赖

安装依赖包

  • 安装为生产依赖项

    $ pnpm add

  • 安装为开发依赖项

    $ pnpm add -D

  • 安装为可选依赖项

    $ pnpm add -O

  • 安装为全局依赖项

    $ pnpm add -g

安装项目全部依赖

依据 package.json 配置安装所有项目依赖

$ pnpm i

删除依赖项

node_modules 和项目的 package.json 中删除相关 packages

$ pnpm remove <pkg>

从依赖项统一安装目录中移除当前项目不需要的packages

$ pnpm prune

查看依赖

查看本地已安装依赖

$ pnpm list

查看全局已安装依赖

$ pnpm list -g

脚本

pnpm 处理 package.jsonscripts 字段与 npm 相同。

运行脚本

运行一个在 package.json 文件中 scripts 定义的脚本

$ pnpm run xxx

创建项目

create-*@pkg/create-* 启动套件创建项目

$ pnpm create <pkg-app>