2016-10-14 4 views
5

yarn, JavaScript의 패키지 관리자가 제공하는 run 명령을 사용하는 데 문제가 있습니다.package.json의 scripts 객체에서 "yarn run"을 실행하는 데 문제가 있습니다.

현재 내 파일에는 다음과 같은 내용이 있습니다. 내 scripts 개체입니다.

"scripts": { 
    "lint": "./node_modules/.bin/eslint --ignore-pattern dist ." 
} 

다음 명령을 실행하면 예상대로 작동합니다 (npm run lint). 그러나 yarn에서 yarn run lint으로 스크립트를 실행하면 다음 오류가 발생합니다.

Petesta :: λ -> ~/Git/yarn yarn run lint 
yarn run v0.15.1 
$ "./node_modules/.bin/eslint --ignore-pattern dist ." 
sh: ./node_modules/.bin/eslint --ignore-pattern dist .: No such file or directory 
error Command failed with exit code 127. 
info Visit http://yarnpkg.com/en/docs/cli/run for documentation about this command. 

./node_modules/.bin 디렉토리 내 $PATH에 있고 나는 당신이 date 또는 pwd 같은 실행 파일이있는 경우 예상대로 다음 yarn run some_script_on_date가 작동 할 것이라고 통보했다.

이 작업을 수행하는 한 가지 방법은 실행하려는 명령이 포함 된 별도의 셸 파일을 만드는 것입니다. 그것을 ./scripts/lint.sh라고 부르 자.

#!/bin/bash 

./node_modules/.bin/eslint --ignore-pattern dist . 

그리고 다음 줄을 추가하려면 scripts 객체 파일 이제 chmod +x ./scripts/lint.sh

에서이 명령을 실행합니다.

"new_lint": "./scripts/lint.sh" 

이제 yarn run new_lint은 예상대로 실행됩니다.

뭔가 누락되었거나 yarn의 스크립트를 호출해야하는 이유는 무엇입니까? npm과 같은 명령을 실행하고 싶습니다.

답변

3

관련이 있다고 생각되는 문제를 발견 : https://github.com/yarnpkg/yarn/pull/809.

실은 npm 스크립트의 공백을 이해하지 못했습니다. 나는 이것이 다음 릴리스에서 수정 될 것 같아요. 내 컴퓨터에서 문제를 재현 할 수 있습니다 (최신 얀 사용 : 0.15.1).

그런데 ./node_modules/.bin을 npm 스크립트에 포함 할 필요가 없습니다. 여기에 설명 된대로 두 NPM 및 원사, 기본적으로 해당 폴더 안에 보이는 것 :

https://docs.npmjs.com/cli/run-script 그래서 당신의 스크립트는 될 수 있습니다 "lint": "eslint --ignore-pattern dist ."

+0

내가 eslint''와 그것을 시도하고 그런 식으로 작동하지 않았다. 명령을 찾을 수 없습니다. 'npm run '에서는 작동하지만'yarn run'에서는 작동하지 않습니다. – Petesta

+0

사실 언젠가는 패키지가'yarnpkg'라고 불리우며 최근에'yarn'으로 사용 중지되었습니다. 이 deprecation 전에'yarnpkg run command'가 예상대로 작동했습니다. 이제 새로운 패키지로는 작동하지 않습니다. – Petesta

+0

아, 오해했습니다. 그냥 출시를 기다려야합니다. – Petesta