Skip to content

npm 의 패키지는 package.json라이프사이클 스크립트 를 정의할 수 있습니다. 가장 일반적인 스크립트는 아래와 같지만 다른 많은 스크립트 도 있습니다.

  • preinstall: 패키지가 설치되기 전에 실행
  • postinstall: 패키지가 설치된 후 실행
  • preuninstall: 패키지가 제거되기 전에 실행
  • prepublishOnly: 패키지가 게시되기 전에 실행

이러한 스크립트는 패키지 관리자가 적절한 시점에 읽고 실행할 것으로 예상되는 임의의 셸 명령입니다. 그러나 임의의 스크립트를 실행하는 것은 잠재적인 보안 위험을 나타내므로 Bun 은 다른 npm 클라이언트와 달리 기본적으로 임의의 라이프사이클 스크립트를 실행하지 않습니다.


postinstall

postinstall 스크립트는 특히 중요합니다. 이는 네이티브 Node.js 애드온 으로 구현된 패키지의 플랫폼별 바이너리를 빌드하거나 설치하는 데 널리 사용됩니다. 예를 들어 node-sass 는 Sass 의 네이티브 바이너리를 빌드하기 위해 postinstall 을 사용하는 인기 있는 패키지입니다.

json
{
  "name": "my-app",
  "version": "1.0.0",
  "dependencies": {
    "node-sass": "^6.0.1"
  }
}

trustedDependencies

Bun 은 임의의 스크립트를 실행하는 대신 "기본 보안" 접근 방식을 사용합니다. 특정 패키지를 허용 목록에 추가할 수 있으며 Bun 은 해당 패키지에 대해 라이프사이클 스크립트를 실행합니다. 특정 패키지에 대해 라이프사이클 스크립트를 허용하도록 Bun 에 알려려면 package.jsontrustedDependencies 배열에 패키지 이름을 추가합니다.

json
{
  "name": "my-app",
  "version": "1.0.0",
  "trustedDependencies": ["node-sass"] 
}

trustedDependencies 에 추가되면 패키지를 설치/재설치합니다. Bun 은 이 필드를 읽고 my-trusted-package 에 대한 라이프사이클 스크립트를 실행합니다.

라이프사이클 스크립트가 있는 상위 500 개 npm 패키지는 기본적으로 허용됩니다. 전체 목록은 여기 에서 확인할 수 있습니다.


--ignore-scripts

모든 패키지에 대해 라이프사이클 스크립트를 비활성화하려면 --ignore-scripts 플래그를 사용합니다.

bash
bun install --ignore-scripts

Bun by www.bunjs.com.cn 편집