web-dev-qa-db-ja.com

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

インストールしようとしているパッケージのバージョンを確認します。バージョンが利用できない場合は、インタラクティブにする予定で、インストールする前にユーザーの確認を求めます。

12
user98239820

Npm installを実行したときにのみpreinstallスクリプトが実行され、モジュールをインストールする前にスクリプトを実行する方法は現在ありませんが、Shellスクリプトを使用できますおよびnpm viewhttps://docs.npmjs.com/cli/view これを行います。

まず、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ビューとシェルスクリプトのさまざまなオプションを使用して、それを進めることができます。お役に立てれば。

4
yawningphantom