2016-05-12 3 views
12

誰かがmy-packageをインストールしたときに、pre-commit gitフック(コードを暗示する)をインストールしたいと思います。これは素晴らしい作品"npm install"にgit hooksをインストールするには?

"scripts": { 
    "postinstall": "./scripts/install-git-hooks" 
} 

私は postinstallスクリプトを追加しようとしました。誰かが npm installを実行すると、 pre-commitフックがインストールされます。

another-packagemy-packageに依存している場合しかし、another-packageためnpm installを実行することは望ましくないとするだけでなくpostinstallスクリプトを実行します。

この望ましくない影響を避ける最もクリーンな方法は何ですか?

+0

これはXYの問題のようです。あなたはYについて質問していますが、より大きな画像で役立つ答えを得るためには、Xに関する情報を提供するべきです。なぜあなたのパッケージは最初にgitフックをインストールすべきですか? – Louis

+0

@Louis私は彼らがコミットする前にコードをほっとするようにユーザーに強要した​​いと思います。 'npm install install'を実行した後に' npm run install-git-hooks'を実行するようにユーザを誘導することができましたが、私はこれを自動化したいと思います。 –

+0

あなたのプロジェクトで実行する必要がある、インストール後のルーチンをいくつか持っているnpmパッケージのほうが公正であるように、手動で行ってください。タイピング、jspm、ジャスミン...など –

答えて

5

ghooks npmモジュールを使用して、それをデベロッパー依存として追加することができます。あなたはpackage.jsonでコミットする前に実行するものを以下のように設定できます:

[...] 
"config": { 
    "ghooks": { 
     "pre-commit": "npm test" 
    } 
} 
[...] 
3

ハッキーですが、あなたのために働くかもしれません。

このトリックは、NPMインストールのサブ依存関係またはルート依存関係であるかどうかを(スクリプト内で)識別することです。 ../../package.jsonが存在するかどうかを確認するだけです。もしそうなら、それは従属依存であり、フックのインストールをスキップする必要があります。

インストールスクリプトの精神に反する、一貫したインストールルールを破っていることに注意してください。これは、何らかの手段で信頼できないクライアント側のフックをインストールするためのものです.Lintingを強制する必要がある場合、これはサーバー側で行う必要があります。

この問題は、前述のように、カスタムインストールスクリプトとして追加の通信オーバーヘッドを処理することで解決する可能性があります。

関連する問題