pnx
别名:pnpm dlx、pnpx
从注册源中获取软件包而不将其安装为依赖项,热加载它,并运行它暴露的任何默认命令二进制文件。
例如,若要在任何地方使用 create-vue 来初始化一个 Vue 项目,而不想在另一个项目下安装它,你可以运行:
pnx create-vue my-app
这将从注册源获取 create-vue 并使用给定的参数运行它。
你还可以指定想使用的软件包的确切版本:
pnx create-vue@next my-app
catalog: 协议也被支持, 允许你使用工作区目录中定义的版本:
pnx shx@catalog:
运行包管理器或运行时
新增于:v12.0.0-rc.6(仅限 pnpm v12)
指定一个 pnpm 提供的包管理器(npm、yarn、bun)或运行时(node、deno、bun),提供实际的程序,而不是安装与其同名的 npm 包:
pnx yarn@4 install
pnx npm@11 ci
pnx bun@1.3.0 install
pnx node@22 --version
那些 npm 包要么是该工具的另一个版本分支,要么是负责下载该工具的包装器,而这正是当初这样命名的初衷:过去运行 pnx yarn@4 会因找不到版本而失败,因为 Yarn 4 是以 @yarnpkg/cli-dist 的形式发布的;而运行 pnx node@22 时,执行的则是一个下载 Node.js 构建版本的包装器,而非该 Node.js 版本本身。
如果指定符用于定位软件包,而非请求特定发布版本,则会按原样安装其所指定的包:
pnx yarn@npm:yarn@1.22.22
pnx yarn@yarnpkg/berry
--package 指定一个包管理器,从而选择运行该包管理器的哪条命令:
pnx --package npm@11 npx create-something
配置项
--package <name>
在运行命令之前要安装的软件包。
示例:
pnx --package=@pnpm/meta-updater meta-updater --help
pnx --package=@pnpm/meta-updater@0 meta-updater --help
可以为安装提供多个软件包:
pnx --package=yo --package=generator-webapp yo webapp --skip-install
--allow-build
添加于:v10.2.0
允许在安装期间执行安装的包名列表。
示例:
pnx --allow-build=esbuild my-bundler bundle
dlx 执行的实际软件包默认允许运行 postinstall 脚本。 因此,如果在上面的例子中 my-bundler 必须在执行之前构建,那么它就会被构建。
--shell-mode, -c
在 shell 中运行该命令。 在 UNIX 上使用 /bin/sh,在 Windows 上使用 \cmd.exe。
示例:
pnx --package cowsay --package lolcatjs -c 'echo "hi pnpm" | cowsay | lolcatjs'
--silent, -s
只打印执行命令的输出。
安全和信任政策
自 v11.0.0 版本起,pnx(及其别名 pnpm dlx / pnpx)在解析和获取请求的软件包时,会遵循项目级别的安全和信任策略设置:
minimumReleaseAge,minimumReleaseAgeExclude,minimumReleaseAgeStricttrustPolicy,trustPolicyExclude,trustPolicyIgnoreAfter
这意味着 pnx 将拒绝执行新发布的或信任度不足的软件包,就像常规的 pnpm install 一样。