J'utilise le bloc de script package.json
pour appeler le script postinstall.sh
immédiatement après yarn install
et yarn install --production
.Noeud/NPM: Comment passer des arguments avec l'appel de fichier .sh
postinstall.sh
contient des npm
privés paquets, donc nous voulons télécharger devDependencies
de ces paquets que lorsque l'environnement est développement et nous voulons ignorer lorsque l'environnement est production.
package.json
"private": true,
"scripts": {
"postinstall": "./postinstall.sh"
}
postinstall.sh
# Get the input from user to check server is Production or not
echo
echo "INFO: We are not downloading Development dependencies of following services in Production environment:
echo "WARN: please enter 'yes' or 'no' only."
while [[ "$PRODUCTION_ENV" != "yes" && "$PRODUCTION_ENV" != "no" ]]
do
read -p "Is this Production environment?(yes/no): " PRODUCTION_ENV
done
if [[ "$PRODUCTION_ENV" == "yes" ]]; then
ENV='--only=production'
fi
npm install $ENV --ignore-scripts pkg-name
Le problème avec le script ci-dessus est que nous ne voulons pas d'interaction utilisateur, alors comment puis-je passer un argument de package.json
en fonction de l'environnement?
De cette façon j'ai essayé. Dans notre cas, cela ne fonctionne pas car nous voulons exécuter postinstall.sh sur les deux environnements. –