2017-10-04 15 views
2

パッケージがインストールされる前に、ポリシングスクリプトを実行しようとしています。例については :NPMプリインストールスクリプト

{ 
    "name": "pre-hook-check", 
    "version": "1.0.0", 
    "description": "", 
    "main": "index.js", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1", 
    "preinstall": "echo preinstall", 
    "postinstall": "echo postinstall" 
    }, 
    "author": "", 
    "license": "ISC", 
    "dependencies": { 
    "abc": "^0.6.1", 
    "preact": "^8.2.5" 
    } 
} 

それは前のようだと私はnpm installを行うときのみ動作し、ポスト上の例のスクリプトをインストールし、私はそれは私が何かをインストールしようとするたびに実行したいです。

たとえば、チームがnpm install <some package>を実行するたびに、パッケージのバージョンを確認するスクリプトを作成したいとします。私はパッケージをインストールするバージョンを確認し、そのバージョンが "1.0.0"を上回っていることを確認します。それ以外の場合はインストールできません。

私がインストールしようとしています任意のパッケージのバージョンに

npm info lodash version

とチェックを行くpreinstallスクリプトを書くことを計画していました。バージョンが利用できない場合、私はそれをインタラクティブにし、インストールの前にユーザーの承認を求める予定です。

+1

これはすばらしいアイデアですが、npmにはそのためのフックがありません。 –

答えて

0

あなたは正しいです、我々は、NPMインストールしない場合にのみ、プリインストールスクリプトが実行され、モジュールをインストールする前にスクリプトを実行する方法は現在ありませんが、あなたはシェルスクリプトhttps://docs.npmjs.com/cli/viewがそうするNPMビューを使用することができます。

まず、そこにあなたのpackage.jsonと同じスコープを持ちmoduleinstall.shファイルと以下のシェルスクリプトを作成

echo 'Enter the name of the module' 
read module_name 
npm view $module_name version 
echo "Do you want to install this version(y/N) " 
read option 
if [ "$option" = "N" ] || [ "$option" = "n" ] 
then 
echo "exiting...." 
exit 1 
else 
npm install $module_name 
fi 

あなたはそれがchmod +x moduleinstall.shを使用して実行可能に作り、その後、あなたにこれを書きますpackage.json

"scripts": { 
"test": "echo \"Error: no test specified\" && exit 1", 
"info": "./moduleinstall.sh" 
} 

今、あなただけのコマンドnpm run infoを実行して、バージョンをチェックしてモジュールをインストールするための指示に従わなければなりません。さまざまなオプションのnpmビューとシェルスクリプトを使用して進めることができます。 これが役立つことを願っています。

関連する問題