Skip to content

Latest commit

 

History

History
55 lines (41 loc) · 2.23 KB

script-runner.md

File metadata and controls

55 lines (41 loc) · 2.23 KB
title description
Script Runner
O contexto é um objeto JavaScript simples que está completamente desacoplado do próprio framework e pode ser aproveitado para usar o mesmo contexto da aplicação principal para executar scripts.

O contexto é um objeto JavaScript simples que está completamente desacoplado do próprio framework e pode ser aproveitado para usar o mesmo contexto da aplicação principal para executar scripts.

Após a compilação, você pode acessar as chaves do contexto executando um script em outro arquivo que simplesmente importa o pacote de ambiente.

Esse padrão é muito mais conveniente do que ter que duplicar sua lógica para scripts pontuais.

Você deve iniciar manualmente a aplicação para garantir que o contexto seja populado.

Você também deve encerrar manualmente o processo, a menos que deseje ter um script que esteja em execução contínua.

O exemplo abaixo é um arquivo JavaScript simples em scripts/seed.js usado com banco de dados MongoDB registrado no contexto:

// Importe de .production em vez disso se você estiver executando em modo de produção.
const { default: context } = require('../.development/server.js');
const Faker = require('@faker-js/faker');

// registrar 5 usuários falsos
async function seed() {
  await context.start();
  const { database, project } = context;
  for (let id = 0; id < 5; id++) {
    await database.collection('users').insertOne({
      id,
      username: Faker.name.firstName()
    });
  }
  console.log(`5 users seeded to ${project.name}`);
  process.exit(0);
}

seed()

Para executá-lo, você pode simplesmente executá-lo como um comando node normal.

🔥 Você sempre deve executá-lo a partir da raiz para pegar o arquivo .env correto

> node scripts/seed.js
5 users seeded

Os script runners são ótimos para várias coisas como:

  • Preencher um banco de dados em um ambiente específico
  • Testar comportamentos do contexto
  • Tarefas pontuais
  • Tarefas agendadas (cron jobs)

E você não está limitado às opções acima, você pode ser criativo e usá-lo para coisas mais complexas, como observar eventos de blockchain ou tarefas que precisam ter acesso ao mesmo contexto da sua aplicação.