npm 스크립트를 실행할 때 출력을 억제하는 방법


93

npm 스크립트를 빌드 도구로 실험하기로 결정했으며 지금까지 좋아합니다. 내가 해결하고 싶은 한 가지 문제는 무언가가 linting을 통과하지 못할 때 jshint를 실행하는 스크립트를 실행할 때 "npm ERR!" 윤곽. linter의 출력이 더 의미가 있으므로 이것을 억제하고 싶습니다.

이것을 전역 적으로 설정하는 좋은 방법이 있고 각 스크립트 실행에 대해 설정하는 방법이 있습니까?

node.js  npm 


:이 매우 주제에 대한 문제가있다 github.com/npm/npm/issues/6124
daotoad

답변:


159

모든 스크립트 :

silent몇 가지 방법으로 로그 수준을로 설정하여 전체적으로 npm의 출력을 억제하여이 문제를 해결할 수 있습니다 .

npm run호출에서 :

npm run --silent <your-script>

또는 다음과 같이 .npmrc파일 (이 파일은 프로젝트 디렉토리 또는 홈 폴더에있을 수 있음) 을 생성하여 전역 적으로 :

loglevel=silent

자원:

npm 로그 수준 구성 : https://docs.npmjs.com/misc/config#loglevel

npmrc : https://docs.npmjs.com/misc/config#loglevel

개별 스크립트 :

linting과 같은 특정 스크립트에서이 문제를 해결하는 데 사용한 간단한 트릭 || true은 이러한 스크립트의 끝에 추가 하는 것입니다. 이것은 npm 구성 변경없이 작동합니다.

이렇게하면 스크립트가 항상 0상태로 종료됩니다 . 이것은 npm이 스크립트가 성공했다고 생각하도록 속여 ERR메시지를 숨 깁니다 . 더 명확하게하려면 || exit 0대신 추가 할 수 있으며 동일한 결과를 얻을 수 있습니다.

{
  "scripts": {
    "lint": "jshint || true",
   }
}

|| npm 실행의 끝에 args를 추가하려는 경우 true가 작동하지 않습니다. NPM 실행은 myCmd - --deploy을
arcseldon

4
이것은 정말 터무니없는 일입니다 (당신을 비난하지 않습니다). 추가하고 싶지 않습니다 || true. 그것은 좋은 해결책이 아닙니다. 을 사용하여 다른 모든 명령을 침묵시키고 싶지 않습니다 .npmrc. 이 특정 스크립트를 -s항상 실행하는 것도 매우 어리석은 것처럼 보입니다. 단일 스크립트를 침묵시키는 더 나은 솔루션을 찾은 사람이 있습니까?
PascalVKooten

다른 사람이이 문제를 발견하면 공개 된 문제가 있습니다. github.com/npm/npm/issues/8821을 참조 하세요 .
Ian Routledge

loglevel = silent는 나에게 지나친 것처럼 보입니다. 그것은 오류 메시지조차도 침묵시킬 것입니다 (여전히 로컬 파일에 기록되지만). 이 제안 직후 링크에 따르면 가능한 로그 수준은 우선 순위에 따라 "침묵", "오류", "경고", "알림", "http", "타이밍", "정보", "상세 정보"입니다. ","바보 ". 나는 "오류"(경고를 억제하지만 오류를 표시 함) 또는 "경고"(경고를 포함)를 제안합니다. 일반적으로 npm이 실행할 항목을 결정하는 방법을 보여줄 이유가 없습니다. 기본적으로 수행되는 작업입니다. 디버깅 텍스트처럼 느껴집니다.
John Deighan 2018 년

좋아, 나 자신을 바로 잡고 이의를 제기해야한다. 어쩌면 node.js 버그일까요? 'loglevel = error'로 .npmrc 파일을 만들 때 'npm test'를 실행하면 실행할 명령 줄을 결정하는 방법에 대한 npm의 논리를 통해 여전히 추적됩니다. 노드 버전 8.12.0, npm 버전 5.8.0.
John Deighan

44

다음 --quiet과 같이 및 --silent옵션을 모두 사용할 수 있어야합니다 .

npm install --quiet

--quietstderr 및 경고를 표시하고 --silent거의 모든 것을 억제해야합니다.

다음 /dev/null과 같이 stdout / stderr을로 보낼 수도 있습니다 .

npm install > "/dev/null" 2>&1

또는 덜 versbose

npm install &> /dev/null

7
Windows에서는 npm install --quiet> NUL
Manohar Reddy Poreddy 2017

4
이 질문은 특히 npm 스크립트 실행에 관한 것 입니다.
hackel

7
npm install --quiet --no-progress 

경고 및 오류를 유지하고이를 지원하는 터미널에서 ADHD 진행률 표시 줄을 표시하지 않습니다.


3
이 질문은 특히 npm 스크립트 실행에 관한 것 입니다.
hackel

1

이벤트 리스너를 제거하여 스크립트 내에서이를 수행 할 수 있습니다.

#!/usr/bin/env node

process.removeAllListeners('warning');

// Do your thang without triggering warnings
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.