npm : 패키지 설치 후 스크립트 비활성화


답변:


267

postinstall스크립트 만 비활성화 할 수는 없습니다 . 그러나 다음을 사용하여 모든 스크립트를 비활성화 할 수 있습니다.

$ npm install --ignore-scripts

delbertooo가 주석에서 언급했듯이 종속성의 스크립트도 비활성화합니다.


2
고마워. 이것이 바로 내가 필요한 것입니다. 그러한 옵션을 어디에서 찾을 수 있습니까? 이것은 'npm help install', 'npm help config'및 'npm help scripts'에 설명되어 있지 않습니다.
farwayer


69
주의! 이 옵션 --ignore-scripts은 의존성에서도 모든 스크립트를 비활성화합니다. 종속성이 스크립트를 실행하여 일부 바이너리를 설치해야하는 경우 중단되거나 불완전 할 수 있습니다.
delbertooo

7
그렇다면 node_modules (및 모든 스크립트)를 설치하지만 주 패키지의 스크립트 만 무시하는 기술이 있습니까?
데릭

3
이것뿐만 아니라 --ignore-scripts, 또는 관련 구성 옵션 (전 세계적으로 설정)도 npm run start자동으로 아무것도하지 않고 성공을보고 한다는 것을 의미합니다 . 몹시 놀라게 하다.
Ash Berlin-Taylor


4

자신의 라이브러리 에서이 작업을 수행하려면 다음과 같은 간단한 것이 좋습니다.

#!/usr/bin/env bash

## this is your postinstall.sh script:

set -e;

if [ "$your_pkg_skip_postinstall" == "yes" ]; then
  echo "skipping your package's postinstall routine.";
  exit 0;
fi

그런 다음 다음을 사용하여 npm 설치를 수행하십시오.

your_pkg_skip_postinstall="yes" npm install

1
감사! 이것은 자신의 스크립트를 비활성화하려고하지만 모든 종속성의 모든 스크립트를 비활성화하지 않는 경우 효과적입니다.
Brian Neisler 23시 07 분

@BrianNeisler yer는 매우 환영합니다. 항상 다른 사람들을 돕는 것이 좋습니다. 그건 그렇고, 대부분의 사용 사례에서 이중 괄호 [[]]가 단일 괄호보다 낫다고 생각합니다.
Alexander Mills

2

프로젝트에 대한 설치 후 스크립트를 비활성화하고 싶었지만 프로젝트 종속성의 모든 스크립트를 실행하려고했습니다 npm install. 이것이 내가 한 일입니다.

  1. 스크립트 작성 ./scripts/skip.js
if (process.env.SKIP_BUILD) {
    process.exit(0);
} else {
    process.exit(1);
}
  1. package.json 파일에서
 "scripts": {
  ...
  "postinstall": "node ./scripts/skip.js || npm run build",
  ...
 }

이제 환경 변수 SKIP_BUILD = 1을 설정하면 패키지가 빌드되지 않고 종속성이 올바르게 빌드됩니다.

SKIP_BUILD=1 npm install
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.