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 빌드를 다운로드하는 래퍼를 실행했습니다.
릴리스된 버전을 요청하는 대신 패키지의 위치를 지정하는 지정자는 해당 대상을 변경 없이 그대로 설치합니다:
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#
버전 10.2.0에서 추가됨
설치 중에 postinstall 스크립트를 실행할 수 있도록 허용된 패키지 이름 목록입니다.
예시:
pnx --allow-build=esbuild my-bundler bundle
기본적으로 dlx로 실행되는 실제 패키지는 postinstall 스크립트를 실행할 수 있습니다. 따라서 위 예시에서 my-bundler를 실행하기 전에 빌드해야 하는 경우 빌드됩니다.
--shell-mode, -c#
쉘 내부에서 명령을 실행합니다. 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과 마찬가지로 새로 게시되었거나 신뢰가 부족한 패키지의 실행을 거부합니다.