Article image
Mario Pitta
Mario Pitta02/10/2024 19:16
Compartilhe

Como rodar vários scripts de npm com um único comando

  • #Node.js
  • #Node Package Manager (NPM)
  • #JavaScript

Fala Devs, beleza?

Bora aprender mais sobre npm e scripts!

Caso nunca tenha acontecido com você, em algum momento da sua vida de programador você vai precisar(ou só querer saber) como executar mais de um script npm. Seja durante os estudos, pra rodar o client side e o server side de uma vez só , sem tem que ficar entrando e saindo de pasta pelo terminal, ou seja ao tentar fazer deploys paralelos de aplicações em um ambiente de produção. Então, já abre o terminal, roda um npm init e bora lá !!

Existem algumas maneiras de executar diversos scripts com npm em apenas um comando e configurar os scripts no package.json será essencial, ou seja, criar um script personalizado para rodar múltiplos comandos. Isso vai facilitar e muito na hora de executar as suas tarefas. Vou trazer duas formas que costumo usar para lidar com os cenários citados acima.

Uma forma vai funcionar em SOs baseados em Unix, ou seja, Linux e afins. O comando completo é:

"nomedoscript": "npm run start & npm run serve"
Note que você precisa apenas colocar o nome que deseja para o script, e separar os comandos por & (e comercial)

Aqui utilizamos o start e o serve, você deve substituir para os scripts de sua escolha.

Dessa forma a excução acontecerá em forma de fila, após o fim do primeiro comando, o próximo será executado, e assim irá acontecer até o final dos comandos passados. Talvez isso sirva para fazer builds e copias, por exemplo, quando um comando tem um fim explicito e você quer que algo aconteça imediatamente após, como ao gerar um build de projeto frontend SPA e voce quer copiar os arquivos minificados para a pasta /public do seu servidor de aplicação sem ter que fazer manualmente, essa será uma ótima forma de otimizar tempo. Um exemplo que costumo fazer:

"deploy": "npm run build & robocopy ./dist/www server/public & npm run ../server deploy"

Porém, haverá outro cenário, onde você precisará que dois processos sejam executados, indepentemente se um deles será finalizado ou , então tente a seguinte abordagem:

  • Você precisará instalar como dependencia do seu projeto o seguinte pacote npm-run-all usando o comando a seguir:
npm i npm-run-all
Você tambem pode instalá-lo globalmente para uso em outros projetos adicionando -g ao final do comando acima.
  • Depois configurar um npm script no seu arquivo package.json para ajudar na hora de executar o comando.

A configuração do npm script será o nome do pacote mais uma opção de execução chamado --parallel, que como o nome sugere, permitirá os comandos serem executados paralelamente e não necessariamente seguindo uma fila de execução e então os nomes dos comandos que devem ser executados. Ao final, o npm script ficará muito parecido com isso:

"nomedoscript": "npm-run-all --parallel start serve"
  • Agora, com o script configurado no package.json, voce precisará executá-lo. Seguindo o exemplo acima, o codigo que precisará ser excutado sera:
npm run nomedoscript

Note também que esta solução vai funcionar em todos os ambientes, inclusive em Windows.

Conclusão

Neste artigo você aprendeu a rodar vários scripts de npm em um único script, criamos nosso script em package.json, como os outros individuais. Porém utilizamos abordagens diferentes para concatenar outros comandos resultando em uma execução paralela de vários scripts npm, a quantidade é indefinida, você que escolhe quantos e quais serão os comandos a serem executados. Mas lembre-se:

Com grandes poderes, vem grandes responsabilidades! - Tio Ben

Compartilhe
Comentários (0)