2017-02-21 11 views
7

私はbinというファイルにコマンドをリンクする内部プロジェクトを持っています。このようなpackage.jsonを期待:インストール時に 'npm link'を直接実行する方法

{ 
    "name": "my-project", 
    "bin": { 
    "cli-name": "./bin/my-executable.js" 
    }, 
    "dependencies": { 
    "node-red": "^1.0.0" 
    } 
} 

npm installを実行し、すべての依存関係がインストールされ、node-redbin設定があまりに作成されます。

しかし、私自身のbinは完全に無視されます。 cmdcli-nameを使用することはできません。 2番目のステップでnpm linkも実行する必要があります。その後、cli-nameはコンソールでコマンドとして利用できます。私もそれでnpm linknpmpostinstallスクリプトを使用しようとしたが、その後、私はループ...

npm installにワンステップでこれを行う方法はありですか?あなたが好きなので、1つのコマンドで両方のタスクを実行するために、あなたのpackage.jsonでスクリプトを作成することができます

npm install 

答えて

1

実際には、このタスクを自動的に実行する組み込みの方法はありません。そこで、この機能のリクエストをnpmに直接作成しました。 npm ilのような新しいコマンドが実装されているようです。

この方法または別の方法が利用可能な場合に、ここでこれを更新します。

https://github.com/npm/npm/issues/15999

0

あなたはこのような何かにあなたpackage.jsonを変更してみてください:

{ 
    "name": "my-project", 
    "bin": { 
    "cli-name": "./bin/my-executable.js" 
    }, 
    "scripts": { 
    "install-link": "npm install && npm link my-project" 
    }, 
    "dependencies": { 
    "node-red": "^1.0.0" 
    } 
} 

次に、npm run install-linkを実行して、両方のコマンドを実行します。

+0

ありがとうございました。しかし、これは私が探していたものではありません。私はこのために独自の登録名が必要であり、npmでスクリプトを実行するのではありません。私は 'npm link'を走らせるのと同じ結果を望んでいます。 – eisbehr

+0

私の悪い、その部分を理解していない – jccguimaraes

+0

@eisbehrは 'postinstall'スクリプトとして' npm link'を使うことができない理由はありますか? 'postinstall'は' install'の後にnpmだけ自動的に実行されます。 https://docs.npmjs.com/misc/scripts 編集:私はあなたが無限ループに終わることを知ります。 –

0

{ 
    "name": "my-project", 
    "script": { 
    "cli-name": "./bin/my-executable.js", 
    "postinstall": "npm run cli-name" 
    }, 
    "dependencies": { 
    "node-red": "^1.0.0" 
    } 
} 

そして、ちょうど実行します。

+0

ご返信いただきありがとうございます。しかし、これはまさに私が望んでいないものです。 – eisbehr

+0

もしこれがあなたの望むものではなく、 'postinstall'はあなたのためには動作しません。ここでの唯一のオプションは、' npm install'の振る舞いを変更することを主張するなら、[npm ](https://github.com/npm/npm)repoして変更を加えたり、プルリクエストを作成して投稿者になります。鎖のコマンド/機能を一緒に使えるようにするには余計に思える。 – grizzthedj

0

npm-linkは本当に別の目的です。あなたがnpmをインストールする瞬間、コマンドラインですでにそれを使用できるはずです。

npmリンクは、現在の開発フォルダとパッケージのインストール済みディレクトリをリンクするためのリンクです。これは、開発フォルダを変更するときに、自動的にcliで使用可能になったため、再インストールする必要がないようにするためです。

インストール後、usr/local/binに移動してみてください。< - これが必要な場所です。ここでmy-executable.jsを見つけることができない場合。その後、そのインストールプロセスで何かが間違っています。

0

globalバイナリ(bin)モジュールを実行するには、それをグローバルにインストールする必要があります。

npm -g install

https://bretkikehara.wordpress.com/2013/05/02/nodejs-creating-your-first-global-module/

別のオプション(Linux上でなら)それはグローバルにインストールされていない場合は$(npm bin)/<module>を使用することです。

+0

フィードバックいただきありがとうございます。しかし、リンクバイナリのためだけにグローバルにすべてをインストールするのはベストアドバイスではないと思います。そして 'npm link'もグローバルインストールなしで動作します。だから私はもっと良い方法を望んでいた... – eisbehr

+0

バイナリを '-g'なしで実行することができます。それはそれを行う最も簡単な方法です。' $(npm bin) 'はバイナリをグローバルにインストールすることなく解決します。 –

関連する問題