본문으로 건너뛰기
버전: 6.x

pnpm run

별칭: run-script

패키지의 매니페스트 파일에 정의된 스크립트를 실행합니다.

예시

다음과 같이 package.json에 구성된 watch 스크립트가 있다고 가정해 보겠습니다.

"scripts": {
"watch": "build-command --watch"
}

이제 pnpm run watch을 사용하여 해당 스크립트를 실행할 수 있습니다! 간단하지요? 키 입력과 시간을 절약하는 것을 좋아하는 사람들을 위해 주목해야 할 또 다른 사항은 모든 스크립트가 pnpm 명령으로 앨리어싱된다는 것입니다. 따라서 궁극적으로 pnpm watchpnpm run watch 의 축약형입니다 (이미 존재하는 pnpm 명령과 동일한 이름을 공유하지 않는 스크립트에만 해당함).

상세 정보

셸의 기존 PATH에 더하여, pnpm runscripts에 제공된 PATHnode_modules/.bin 을 포함합니다. 즉, 패키지가 설치되어 있는 한 일반 명령어처럼 스크립트에서 사용할 수 있습니다. 예를 들어, eslint 가 설치되어 있는 경우, 다음과 같이 스크립트 를 작성할 수 있습니다.

"lint": "eslint src --fix"

그리고 eslint 가 셸에 전역적으로 설치되어 있지 않아도 실행됩니다.

워크스페이스의 경우, v3.5부터 <workspace root>/node_modules/.bin 도 에 PATH에 추가되었으므로, 도구가 워크스페이스의 루트에 설치되었다면 어떤 워크스페이스 패키지의 scripts에서도 호출될 수 있습니다.

npm run과의 차이점

기본적으로, pnpm은 사용자 정의 스크립트 (예를 들어 prestart) 에 대해 임의의 prepost 후크를 실행하지 않습니다. npm으로부터 상속된 이 행위는 스크립트를 명시적인 대신 암시적인 상태로 만들며, 실행 흐름을 난독화합니다. 또한 pnpm servepnpm preserve 를 동작시키는 놀라운 실행으로 이어졌습니다.

어떤 이유로 npm의 pre/post 스크립트 동작이 필요한 경우, enable-pre-post-scripts 옵션을 사용하세요.

옵션

script-shell

Added in: v5.10.0

  • Default: null
  • 유형: path

The shell to use for scripts run with the pnpm run command.

For instance, to force usage of Git Bash on Windows:

pnpm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"

shell-emulator

Added in: v5.8.0

  • 기본값: false
  • 유형: Boolean

When true, pnpm will use a JavaScript implementation of a bash-like shell to execute scripts.

This option simplifies cross-platform scripting. For instance, by default, the next script will fail on non-POSIX-compliant systems:

"scripts": {
"test": "NODE_ENV=test node test.js"
}

But if the shell-emulator setting is set to true, it will work on all platforms.

--recursive, -r

This runs an arbitrary command from each package's "scripts" object. If a package doesn't have the command, it is skipped. If none of the packages have the command, the command fails.

--if-present

Added in: v4.5.0

You can use the --if-present flag to avoid exiting with a non-zero exit code when the script is undefined. This lets you run potentially undefined scripts without breaking the execution chain.

--parallel

버전 5.1.0에서 추가됨

Completely disregard concurrency and topological sorting, running a given script immediately in all matching packages with prefixed streaming output. This is the preferred flag for long-running processes over many packages, for instance, a lengthy build process.

--stream

버전 5.1.0에서 추가됨

Stream output from child processes immediately, prefixed with the originating package directory. This allows output from different packages to be interleaved.

--aggregate-output

버전 6.24.0에서 추가됨

병렬로 실행되는 자식 프로세스의 출력을 집계하고 자식 프로세스가 완료될 때만 결과를 출력합니다. pnpm -r <command> 명령어가 --parallel 또는 --workspace-concurrency=<number> 와 함께 실행한 후 대용량 로그를 읽기가 훨씬 쉬게 만들어 줍니다 (특히 CI에서). --reporter=append-only 만 지원됩니다.

enable-pre-post-scripts

버전 6.1.0에서 추가됨

  • 기본값: false
  • 유형: Boolean

true이면, pnpm은 모든 pre/post 스크립트를 자동으로 실행합니다. 따라서 pnpm foo 를 실행하는 것은 pnpm prefoo && pnpm foo && pnpm postfoo 을 실행하는 것과 같습니다.

--filter <package_selector>

필터링에 대해 자세히 알아보세요.