J'essaie d'exécuter un script de contrôle avant d'installer des packages. Par exemple:
{
"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"
}
}
Il semble que le script de pré-installation et de post-installation de l'exemple ci-dessus ne fonctionne que lorsque je fais npm install
, mais je veux qu'il s'exécute chaque fois que j'essaie d'installer quoi que ce soit.
Par exemple: supposons que je veuille écrire un script pour vérifier la version du paquet chaque fois que mon équipe exécute npm install <some package>
. Je veux vérifier la version du paquet d'installation et vérifier que sa version est supérieure à "1.0.0", sinon ne les laissez pas installer.
Je prévoyais d'écrire un script de pré-installation qui va
npm info lodash version
et vérifie la version de tout paquet que j'essaie d'installer. Si la version n'est pas disponible, j'ai l'intention de la rendre interactive et de demander à l'utilisateur d'accuser réception avant de l'installer.
Vous avez raison, le script de préinstallation ne s’exécute que lorsque npm install est installé et il n’existe actuellement aucun moyen d’exécuter un script avant d’installer un module, mais vous pouvez utiliser Script de shell et npm view https://docs.npmjs.com/cli/view pour le faire.
Commencez par créer un fichier moduleinstall.sh ayant la même étendue que votre package.json et le script Shell ci-dessous.
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
assurez-vous de le rendre exécutable en utilisant chmod +x moduleinstall.sh
, puis écrivez-le dans votre package.json
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"info": "./moduleinstall.sh"
}
Il ne vous reste plus qu'à exécuter la commande npm run info
puis à suivre les instructions pour installer un module en vérifiant la version. Vous pouvez le faire avancer en utilisant différentes options de vue npm et de script Shell. J'espère que cela t'aides.