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 exécuter pour permettre à tous ces scripts de se lancer séquentiellement. Lorsque j'utilise la correction pré / post, ils se lancent séquentiellement mais n'attendent pas que le script parent se termine avant de s'exécuter. Je suppose que la seule solution est la suivante: Comment faire pour que les tâches Gulp se déclenchent séquentiellement lors du déclenchement de commandes shell dans une fonction d'assistance async.series? ? Je sais que cela peut être fait avec Gulp mais je voudrais rester avec NPM pour le moment pour explorer ses capacités. Merci pour toute aide!
javascript
node.js
npm
cmd
Riz
la source
la source
Start
commande, vous devriez pouvoir utiliser le/wait
paramètre (Démarrer l'application et attendre qu'elle se termine)Réponses:
Appelez ces scripts via npm run et enchaînez-les avec une double esperluette
&&
:Explication:
&&
(double esperluette) pour une exécution séquentielle.&
(une seule esperluette) pour une exécution parallèle.la source
&&
sont évalués par le shell et ne fonctionnent pas sous Windows.&&
syntaxe est une construction UNIX. Il se comportera de manière incorrecte sur les machines de Windows, avec des conséquences potentiellement graves pour votre processus de construction.npm-run-all
documentation: «nous utilisons parfois&
pour exécuter plusieurs commandes en parallèle, mais Windows 'cmd.exe
... ne prend pas en charge [cet opérateur].» Il semblerait donc que vous aviez raison - au moins d'après ma brève recherche, l'&&
opérateur semble parfaitement compatible multiplateforme.Suite à l'excellente réponse de @ Mobiletainment , vous pouvez également utiliser npm-run-all pour rendre la commande beaucoup plus courte et beaucoup plus lisible. Dans ton cas:
run-s
est un raccourcinpm-run-all
fournit, qui exécute tous les scripts npm donnés séquentiellement, d'où le-s
(run-s
est une version plus courte denpm-run-all -s
).la source
Vous pouvez simplement les insérer dans un autre script.
"start": "pre-build && build_logic && post_build && exit"
la source
start
commande que vous exécutez dans Windows est techniquement terminée. Utilisez l'/wait
indicateur avecstart
pour forcer l'start
application à rester ouverte jusqu'à ce que la méthode interne soit également terminée.start notepad
partir d'une invite de commande, puis jetez un œil à l'invite de commande d'origine. Vous devriez pouvoir saisir une autre commande. Alors courezstart /wait notepad
. Lastart
commande doit continuer à «s'exécuter» pendant que la fenêtre de votre bloc-notes est ouverte (jetez à nouveau un coup d'œil à l'invite de commande). Ensuite, une fois que vous fermez le bloc-notes, cestart
sera terminé.Vous pouvez préfixer vos scripts
pre
etpost
ainsi ils s'exécuteront automatiquement:puis courir
npm run build
la source
tu peux essayer:
la source
Vous pouvez utiliser npm-run-all pour combiner plusieurs commandes de différentes manières
Par exemple, si vous aviez les scripts suivants dans votre
package.json
:Vous pouvez les exécuter tous séquentiellement comme ceci:
Voir cette question pour savoir comment exécuter plusieurs commandes npm en parallèle
la source