NPM Scripts mais inteligentes

Este post é sobre a utilização da biblioteca Wireit em conjunto com scripts NPM.

NPM Scripts

NPM é um gerenciador de pacotes bem conhecido no mundo JavaScript. E através dele, conseguimos configurar scripts que nos ajudam durante o processo de desenvolvimento, testes e build das nossas aplicações.

Por exemplo, no arquivo package.json podemos definir uma série de comandos para build, execução e verificação de tipos:

{
  "name": "testing-wireit"
  "scripts": {
    "build": "next build",
    "start": "next start",
    "typecheck": "tsc"
  },
  "dependencies": {
    "next": "latest",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
  }
}

Com isso, ao executar o comando npm run build o NPM irá não somente executar o comando equivalente, mas também irá executá-los utilizando as bibliotecas instaladas localmente no nosso projeto.

Usando NPM Scripts com Wireit

Wireit é uma ferramenta do Google que roda em conjunto com os NPM scripts e torna esses scripts mais eficientes e inteligentes. Algumas features e vantagens do Wireit incluem:

  • Utilizar os comandos npm run que você já conhece;
  • Executa automaticamente as dependências entre os scripts NPM em paralelo;
  • Assiste qualquer script e o executa continuamente em caso de alterações;
  • Armazena os resultados em cache local e remoto
  • Possui um plugin do VSCode que oferece sugestões, documentação e avisos enquanto você desenvolve novos scripts ou mantém scripts pré-existentes

Bom, com isso em mente, vamos para um exemplo prático. Após instalar o Wireit como dependência de desenvolvimento:

npm run install wireit -D

Podemos fazer algumas alterações no nosso package.json para utilizar o Wireit definitivamente no nosso projeto:

{
  "name": "testing-wireit"
  "scripts": {
    "build": "wireit",
    "start": "wireit",
    "typecheck": "wireit"
  },
  "wireit": {
    "build": {
      "command": "next build",
    },
    "start": {
      "command": "next start",
      "dependencies": ["build"] # exemplo de dependencia entre scripts
    },
    "typecheck": {
      "command": "tsc"
    }
  },
  // ...
}

Após essas alterações, é possível utilizando meus scripts normalmente.

Não esqueça de adicionar a pasta gerada pelo wireit no seu arquivo .gitignore.

echo .wireit >> .gitignore

Scripts em paralelo

O Wireit executa scripts em paralelo por padrão. Inicialmente, ele irá executar até 2 scripts por vez para cada core de CPU lógico detectado no seu sistema. A quantidade desses scripts também irá depender do seu mapa de dependencias.

Se você necessitar configurar um numero diferente, ele disponibiliza a variável de ambiente WIREIT_PARALLEL para determinar o numero de scripts a serem executados em paralelo.

export WIREIT_PARALLEL=4

Para entender mais sobre como rodar scripts NPM em paralelismo, veja a documentação oficial aqui.

Compartilhe:
Buy Me A Coffee