2016-05-18 21 views
0

私は、リポジトリB(両方ともローカルにクローン化された)からリポジトリに位置NPM runスクリプトを起動します。実行NPMスクリプト

リポジトリスクリプトがpackage.jsonで、このように定義されています

"scripts": { 
    "my-script": "node my-script.js" 
} 

...それはnpm run my-scriptで立ち上げています。この方法でエラーが発生しても正常に動作します。スクリプトはいくつかのファイルをコンパイルし、repo A内の別のフォルダにコピーします。

ので、リポジトリBからそのプロセスを実行することができるように私の最初に考えたのは、単純に、NPMからnode my-script.jsを呼び出すことでした。

"scripts": { 
    "my-script-in-other-repo": "node ../path/to/repo/my-script.js" 
} 

...とリポジトリBnpm run my-script-in-other-repoでそれを呼び出します。

このアプローチでは、ノードとNPMのエラーが発生し、これを解決するために何もしません。もののようなものMake sure you have the latest version of node.js and npm installed.Here is the output

私の直感では、それはノードのコンテキストに問題がある可能性があり、または多分リポジトリB内のノードがリポジトリAでのdevのパッケージにアクセスすることができないと言われます。

迅速かつ汚いソリューションは、ファイルのパスを変更し、同じ依存関係をコピーBリポジトリにmy-script.jsを複製することができ...しかし、それはちょっと醜いです。

これを解決するクリーナー方法はありますか?

+1

1.エラーメッセージの無駄な部分を見ている可能性があります。出力をそのまま表示できますか?あなたは** B **を支配していますか?もしあなたがいれば、 "my-script.js"を "バイナリ"にしてdevの依存関係として実行することができます。 3.わずかなニックピット:npmは略語ではなく、ちょうど小文字にしてください。 ;) –

+0

ちょっと@ E_net4私は自分の質問を編集しました。はい、私は両方のレポを管理しています。 – Pier

+0

実際のエラーはnpmのエラーメッセージの前にあり、 'npm run bundle-css && npmはbuild-jsを実行します。&& npmはbuild-js-dependenciesを実行します。&& npmはsync-reposを実行し&nbsp run bundle-css-XXXXXXXXXXXXX'を実行します。それを調べたいかもしれません。 –

答えて

2

は、あなたのプロジェクトBの依存関係としてを持っているようだ、とあなたは独立したapplications.Luckilyとして直接実行されることを意図しているでスクリプトを持っていることを、NPMで痛みのない方法がありますそのようなスクリプトを登録して扶養家族から実行することができます。プロジェクト

、あなたの実行可能なスクリプトを維持するために"bin" property in package.jsonを使用します。プロジェクトB

"bin": { 
    "A-script": "my-script.js" 
}, 

、(あなたがそれを必要とするときに応じて、またはdevDependency)依存関係としてを保ちますコマンドのようにA-scriptを実行してください:

"scripts": { 
    "my-script-in-other-repo": "A-script" 
} 

ただし、モジュールr他の種類のリソースを解決するには、fsを使用して現在の作業ディレクトリに依存します。docs regarding fs operationsによると:あなたは、ソースコードに対するいくつかの場所に存在する(たとえば、CSSファイルなど)リソース・ファイルをロードする必要がある場合は

The relative path to a filename can be used. Remember, however, that this path will be relative to process.cwd() .

、そのファイルに解決するために__dirnameグローバル変数を使用することを検討してください。これは実際にあなたの問題の根源になっている可能性があります。

関連する問題