2016-10-14 6 views
5

コマンド(yarn、JavaScriptのパッケージマネージャで提供)の使用に問題があります。package.jsonのscriptsオブジェクトで「yarn run」が実行されない

現在、私のpackage.jsonファイルには、私の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が動作することを通知しました。

これを動作させる1つの方法は、実行しようとしているコマンドを含む別のシェルファイルを作成することです。それを./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を使用)。

ところで、npmスクリプトに./node_modules/.binを含める必要はありません。ここで説明したように、NPMと糸の両方が、デフォルトでそのフォルダ内になります。https://docs.npmjs.com/cli/run-script

をだからあなたのスクリプトでのみ使用できます"lint": "eslint --ignore-pattern dist ."

+0

私はeslint' 'でそれを試してみましたが、それがそのように動作しませんでした。コマンドが見つかりません。 'npm run'では動作しますが、' yarn run'では動作しません。 – Petesta

+0

言い換えれば、先日、笑、パッケージは 'yarnpkg'と呼ばれ、'糸 'のために最近非難されました。この廃止の前に 'yarnpkg run command'が期待通りに機能しました。新しいパッケージでは動作しません。 – Petesta

+0

ああ、私は誤解しました。ただリリースを待たなければならない。 – Petesta

関連する問題