2015-01-26 5 views
6

에 문제가 갖는도구를 구축/작업 주자로 NPM을 사용하여 -이 글 읽은 후 도구를 구축/작업 주자로 NPM을 사용하기 위해 노력하고있어 일부 CLI 모듈

How to use npm as a build tool

을 나는 동안을 어떤 성공을 거두고, 나는 한 가지에 붙어있다.

enter image description here

당신이 볼 수 있듯이, 명령이 잘 작동하지만, NPM : JSLINT, JSHINT, 또는 ESLINT 같은 명령 줄 글로벌 도구를 실행하는 경우, NPM는 항상 콘솔 창에서 1 번 출구 코드를 표시합니다 그것을 오류로보고 오류 로그 정보를 표시합니다. 이것은 정상적인가요? 그리고/또는 특정 명령에 대해 이것을 끌 수있는 방법이 있습니까?

추가 정보 :이 내 package.json의 설정에서 스크립트 블록 :

"스크립트": { 는 "시작" "노드 ./src/server/index.js" "테스트" "" "보풀": "eslint하는 index.js" }

는 NPM의 CLI에서 내가 입력 :

npm run lint 

이 레이블이 package.json 파일에있는 스크립트를 실행합니다 : '보푸라기'

+0

이것은 당신을 위해 좋은 읽을 거리가되어야합니다 : http://substack.net/task_automation_with_npm_run – naomik

답변

2

유효성 검사 오류가 있으므로 eslint에 종료 코드 1이 있으므로 npm은 실행 중에 오류가 발생했다고 생각합니다.

"scripts": { "start": "node ./src/server/index.js", "test": "", "lint": "eslint index.js; true" } 
+0

진정한 플래그가 그 맥락에서 작동하지 않도록 나는 cli를 사용하고 있습니다. – u84six

+0

죄송합니다. Linux 명령입니다. 내 dev env는 Windows이므로 - silent 플래그를 사용하는 것이 가장 좋습니다. 내 대답을 보라. – u84six

1

나는이 문제에 대한 해결 방법을 발견했습니다 : 당신이 리눅스를 사용하는 경우

, 당신은 항상 종료 코드 0을 반환하는이 트릭을 사용할 수 있습니다. 스크립트 차단에, 나는 --silent 플래그 보풀의 NPM 명령을 호출하는 테스트 스크립트를 사용

"scripts": { 
"start": "node ./src/server/index.js", 
"test": "npm run-script --silent lint", 
"lint": "eslint index.js"} 

그런 다음 명령 줄에 내가 입력 할 수 있습니다

npm run test 

지금이야 오류 로그를 표시하지 않고 작업합니다.

2

NPM 스크립트는 이러한 방식으로 작동하도록 설계되었으므로 종료 코드 1 또는 2 (0 이외의 문자)를 사용하면 운영 체제에서와 동일한 방식으로 게시 작업이 실행되지 않습니다 . --silent 플래그 를 사용

옵션이지만, 스크립트와 다른 문제가 문제가 될 수 있으며, 당신은 어떤 보풀/테스트 오류없이 실패 시작 빌드 할 때 당신은 벽에 머리를 두드리는 바람됩니다 .

여기서 가장 좋은 점은 원하지 않는 상황에서 오류 종료 코드를 출력하지 않도록 프로세스를 구성하는 것입니다. 이 경우 ... 귀하의 eslint 구성에 따라 합법적으로 팝업 오류가 있습니다. 이로 인해 오류 종료 코드가 발생하고 다음 프로세스가 실행되는 것을 방지합니다. npm 스크립트를 사용할 때 실제로는 이 매우 유용합니다. 오류가 있음을 알 때 테스트/빌드 단계가 불필요하게 실행되는 것을 방지 할 수 있기 때문에 npm 스크립트를 사용할 때이 유용합니다.

이 경우 프로젝트에 .eslintrc 파일을 추가하고 linting 오류 및 npm 오류를 처리하는 몇 가지 규칙을 지정하려고합니다.

빠른 샘플 .eslintrc을 아래에 게시했습니다. 명령 줄에서 eslint을 실행하면 .eslintrc 또는 .eslintignore 파일을 자동으로 감지하고 해당 구성을 준수합니다.

아래의 샘플은 당신의 linting erros를 정리하지만, eslint가 "트리거"를 집어 들었을 때 발생하는 종료 코드를 변경합니다. 규칙을 0으로 변경하면 해당 패턴을 인식 할 때 알림을 표시하지 않습니다.

당신이 사용하고 configuring rule codes, 또는에 대한 자세한 내용을보실 수 있습니다 ... 빌드 도구로 NPM을 사용하고 eslint 사용이 포함되어 내가 만든 시드 프로젝트 체크 아웃 :이 사용 react-flux-npm-automation

// /path/to/project/.eslintrc 
{ 
    "parser": "babel-eslint", 
    "env":{ 
     "browser":true, 
     "node":true, 
     "es6":true 
    }, 
    "rules": { 
     "strict":0, 
     "quotes":0, 
     "no-unused-vars":0 
    } 
} 
3

를 :

"scripts": { 
    "start": "node ./src/server/index.js", 
    "lint": "eslint index.js || exit 0" 
} 

감사합니다.