224 votes

Exécution séquentielle des scripts de NPM

Disons que j'ai

"scripts": {
    "pre-build": "echo \"Welcome\" && exit 1",
    "build_logic": "start cmd.exe @cmd /k \"yo esri-appbuilder-js:widget && exit 1\"",
    "post_build":  "start C:\\WebAppBuilderForArcGIS\\startupShortcut",
    "exit" : "start cmd.exe @cmd /k \"echo \"goodbye\" && exit 1\""
  },

Quelle commande NPM puis-je lancer pour que tous ces scripts se lancent séquentiellement. Lorsque j'utilise la pré/post fixation, ils se lancent séquentiellement mais ils n'attendent pas que le scripts parent se termine avant de s'exécuter. Je suppose que la seule solution est comme : Comment faire en sorte que les tâches Gulp se déclenchent de manière séquentielle lors de l'envoi de commandes shell dans une fonction d'aide async.series ? ? Je sais que cela peut être fait avec Gulp mais je voudrais rester avec NPM pour l'instant pour explorer ses capacités. Merci pour toute aide !

0 votes

Réponse mise à jour en bas de page

0 votes

Selon la documentation de Start vous devriez être en mesure d'utiliser /wait paramètre (Démarrer l'application et attendre qu'elle se termine)

6voto

Muhammed Moussa Points 213

Vous pouvez essayer :

"scripts": {
  "clean-dist": "rm -f ./dist/*.js && rm -f ./dist/*.map",
  "build": "npm run clean-dist && parcel build ./packages/index.html"
},

2voto

Brian Parks Points 138

Il existe plusieurs options qui sont meilleures que la réponse acceptée :

  • && - exécute les commandes séquentiellement, tant que chacune d'entre elles est réussie : command && command && command ; supporté dans le plus shells (les premières versions de Powershell ne le permettaient pas) (merci @Mobiletainment)
  • ; - exécute les commandes séquentiellement, en ignorant les succès et les échecs ; supporté par la plupart des shells, mais pas tous.
  • le site npm-run-all permet d'exécuter plusieurs commandes, soit en séquence, soit en parallèle ; cf. la documentation pour l'utilisation (merci @Or A.)
  • le site concurrently package - exécute plusieurs commandes en parallèle (inclus parce que c'est un résultat populaire de Google) ; voir la documentation pour l'usage

1voto

Aerodynamic Points 183

Exemple de mélange séquentiel et parallèle

Au cas où vous auriez besoin d'un mélange, voici ce que j'ai fait pour que la commande_1 s'exécute et se termine en premier, tandis que la commande_2a et la commande_2b peuvent s'exécuter en parallèle.

    "dev": "yarn command_1 && (yarn command_2a & yarn command_2b)"

Exemple pratique :

    "dev": "yarn buildPackage && (yarn watchPackageSource & yarn watchExamplePage)"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X