Digamos que eu tenho
"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\""
},
Qual comando do NPM posso executar para permitir que todos esses scripts sejam iniciados sequencialmente. Quando uso a correção pré / pós, eles são iniciados seqüencialmente, mas não esperam o script pai terminar antes de executar. Estou assumindo que a única solução é: Como faço para que as tarefas do Gulp sejam acionadas sequencialmente ao disparar comandos do shell em uma função auxiliar do async.series? ? Eu sei que isso pode ser feito com o Gulp, mas eu gostaria de permanecer no NPM por enquanto para explorar suas capacidades. Obrigado por qualquer ajuda!
javascript
node.js
npm
cmd
Arroz
fonte
fonte
Start
comando, você deve ser capaz de usar/wait
parâmetro (aplicação Iniciar e esperar por ele para terminar)Respostas:
Invoque esses scripts via npm run e encadeie-os com e comercial duplo
&&
:Explicação:
&&
(duplo e comercial) para execução sequencial.&
(único e comercial) para execução paralela.fonte
&&
são avaliados pelo shell e não funcionam no Windows.&&
sintaxe é uma construção UNIX. Ele se comportará incorretamente nas máquinas do Windows, com conseqüências potencialmente prejudiciais para o processo de compilação.npm-run-all
documentos: “às vezes usamos&
para executar vários comandos em paralelo, mas o Windows 'cmd.exe
... não suporta [esse operador].” Parece que você estava certo - pelo menos, a partir de minha breve pesquisa, o&&
operador parece perfeitamente compatível com várias plataformas.Após a ótima resposta do @ Mobiletainment , você também pode usar o npm-run-all para tornar o comando muito mais curto e muito mais legível. No seu caso:
run-s
é um atalhonpm-run-all
fornecido, que executa todos os scripts npm fornecidos seqüencialmente, daí a-s
(run-s
é uma versão mais curtanpm-run-all -s
).fonte
Você pode simplesmente colocá-los em outro script.
"start": "pre-build && build_logic && post_build && exit"
fonte
start
comando que você estiver executando o Windows tecnicamente é acabado. Use o/wait
sinalizador comstart
para forçar ostart
aplicativo a permanecer aberto até que o método interno também seja concluído.start notepad
partir de um prompt de comando e dê uma olhada no prompt de comando original. Você deve poder digitar outro comando. Então corrastart /wait notepad
. Ostart
comando deve continuar a "executar" enquanto a janela do seu bloco de notas estiver aberta (consulte o prompt de comando novamente). Então, quando você fechar o bloco de notas,start
será concluído.Você pode prefixar seus scripts
pre
epost
eles serão executados automaticamente:então corra
npm run build
fonte
podes tentar:
fonte
Você pode usar o npm-run-all para combinar vários comandos de várias maneiras diferentes
Por exemplo, se você tivesse os seguintes scripts no seu
package.json
:Você pode executá-los todos sequencialmente assim:
Consulte esta pergunta para saber como executar vários comandos npm em paralelo
fonte