Pular para o conteúdo

Conceitos

O @aws/nx-plugin é um plugin do Nx que fornece um conjunto de ferramentas para construir e implantar aplicações full-stack na AWS. Ele oferece uma coleção de Geradores que criam código de aplicação seguindo as melhores práticas e a infraestrutura para implantá-lo — com segurança de tipos, executável localmente e implantável desde o início, aproximando você da produção.

Em vez de começar de uma página em branco, você (ou seu agente de IA) escolhe os componentes que precisa — APIs, websites, autenticação, agentes de IA, infraestrutura — fornece algumas opções de configuração, e o plugin gera código inicial seguindo as melhores práticas. Ele até conecta projetos entre si para você (incluindo atualização de arquivos existentes via transformações AST) para produzir clientes com segurança de tipos entre seu frontend e backend.

Nx é um framework de build inteligente para gerenciar monorepos. Ele é agnóstico de linguagem, permitindo que TypeScript, Python, infraestrutura e mais coexistam e sejam construídos juntos em um único workspace. Seu sistema de build usa cache e análise de grafo de dependências para reconstruir apenas o que mudou e executar tarefas em paralelo, mantendo testes, linting e builds rápidos à medida que seu workspace cresce.

Cada funcionalidade no @aws/nx-plugin é entregue como um Generator do Nx — scaffolding automatizado que produz estruturas de código consistentes a partir de templates predefinidos. Geradores podem ser invocados via Nx CLI, o plugin IDE Nx Console, ou pelo seu assistente de IA através do Nx Plugin for AWS MCP Server.

Como cada componente é um gerador, você adiciona apenas o que precisa, quando precisa. Comece com uma API, adicione um website depois, conecte-os quando estiver pronto — cada passo é um único comando.

O @aws/nx-plugin deliberadamente evita construir abstrações personalizadas sobre as ferramentas que você já conhece. Em vez de inventar frameworks, runtimes ou wrappers sob medida, ele cria código idiomático usando projetos de código aberto estabelecidos e amplamente adotados. Isso significa que suas habilidades existentes são transferidas diretamente, você pode confiar na documentação oficial de cada framework, e você nunca fica preso em uma camada que apenas este plugin entende.

O código gerado se apoia nos ombros de frameworks de primeira classe, incluindo:

O valor do plugin está em como essas peças são configuradas e conectadas para a AWS — não em substituí-las.

Todo código gerado é seu código. O @aws/nx-plugin é uma ferramenta de tempo de build, não uma dependência de runtime — uma vez que um gerador foi executado, o plugin não está mais em cena. Você pode ler cada arquivo que ele produziu, fazer commit e alterá-lo como quiser.

Isso significa:

  • Sem escape hatches. Não há superfície de configuração proprietária para aprender ou lutar quando você precisa fazer algo que o gerador não antecipou. Você edita o código gerado diretamente, da mesma forma que editaria qualquer código que você mesmo escreveu.
  • Sem novas camadas de abstração. Geradores emitem código simples e idiomático para os frameworks subjacentes. Não há API wrapper ou indireção mágica entre você e React, tRPC, FastAPI, CDK ou qualquer uma das outras ferramentas — o que você vê é o que executa.
  • O plugin não é uma dependência. Ele gera código e sai do caminho. Sua aplicação não importa ou depende de @aws/nx-plugin em runtime, então você nunca é bloqueado por ele e nunca fica preso.

Se você não gostar de algo no código gerado, você é livre para modificá-lo. Geradores dão a você um ponto de partida, não uma jaula.

Possuir seu código geralmente tem um custo: no momento em que você começa a editar um scaffold, você é desconectado das correções e melhorias feitas upstream. Adotá-las novamente significa ler um changelog, regenerar e reconciliar um diff manualmente. Migrações são como o @aws/nx-plugin trabalha para evitar que isso aconteça.

Lançamentos incluem migrações junto com eles, visando trazer o código que geradores anteriores produziram em sintonia com as melhorias que fizemos desde então. Quando corrigimos um bug, fortalecemos um padrão de segurança ou refinamos um padrão gerado, executar nx migrate aplica essa mudança ao seu código, no lugar — em vez de deixar você identificá-la em um changelog e portá-la você mesmo.

Na prática:

  • Atualizar é automatizado, não um exercício de readoção. Um workspace gerado meses atrás pode avançar com o plugin em vez de se afastar dele.
  • Personalizações são correspondidas por padrão, não sobrescritas. Migrações verificam se um arquivo ainda corresponde à forma que o gerador produziu. Onde ele divergiu além do que elas podem atualizar com segurança, elas deixam seu código intacto e reportam o acompanhamento manual necessário.
  • Algumas mudanças chegam como prompts de agente. Onde a edição correta depende do que você construiu, a migração é um prompt que seu agente de codificação de IA aplica em vez de um codemod.
  • Atualizações são opt-in. Nada no seu workspace muda até que você escolha executar nx migrate.

Migrações estreitam a lacuna em vez de fechá-la: o quão longe seu código se moveu decide quanto elas podem fazer, e alguns passos ainda precisarão de suas mãos.

O @aws/nx-plugin se esforça para manter o número de dependências globais ao mínimo. O que você precisa para começar se resume a quais geradores você invoca.

Como exemplo, qualquer gerador baseado em TypeScript exigirá apenas que o Node esteja instalado. Para projetos baseados em Python, UV é o único requisito.

O @aws/nx-plugin emprega segurança de tipos para simplificar a experiência do desenvolvedor via completions da IDE, ao mesmo tempo que elimina erros de runtime que de outra forma só surgiriam em uma implementação sem segurança de tipos. Como tal, todos os componentes fornecidos têm segurança de tipos por padrão.

A segurança de tipos flui através das fronteiras do projeto: quando você conecta um website a uma API, o cliente gerado compartilha tipos com o backend, então uma mudança em um contrato de API aparece como um erro de tempo de compilação no seu frontend em vez de um bug em produção. Refatore com confiança.