Workspace
Quando você cria um novo workspace com @aws/nx-plugin, o gerador de preset configura um monorepo Nx com padrões sensatos para construir na AWS.
Criando um Workspace
Seção intitulada “Criando um Workspace”pnpm create @aws/nx-workspace my-projectyarn create @aws/nx-workspace my-projectnpm create @aws/nx-workspace -- my-projectbun create @aws/nx-workspace my-project| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
| addTsPlugin | boolean | true | Se deve adicionar o plugin ts. |
| iacProvider | string | CDK | O provedor de IaC preferido. |
| gitSecrets | boolean | true | Se deve configurar git-secrets para prevenir o commit de credenciais AWS. |
| containerEngine | string | infer | O motor de contêiner a ser usado para build/push/login. 'infer' escolhe docker se instalado, caso contrário finch (voltando para docker quando nenhum estiver instalado). |
Estrutura do Workspace
Seção intitulada “Estrutura do Workspace”Directorypackages/ Seus projetos ficam aqui
- …
- package.json package.json raiz para seu monorepo
- nx.json Configuração do Nx (targets comuns, geradores de sincronização, caching)
- tsconfig.base.json Configuração raiz do TypeScript
- aws-nx-plugin.config.mts Configuração do Nx Plugin for AWS
Directory.git-secrets/ Script bash do git-secrets vendorizado para verificação de credenciais
- …
Directory.husky/ Hooks do Git
- …
Nx é um sistema de build agnóstico de linguagem para monorepos, gerenciando dependências entre projetos escritos em qualquer linguagem de programação e as tarefas para construí-los. Você pode aprender mais no site do Nx.
Projetos
Seção intitulada “Projetos”Um monorepo Nx é composto por um ou mais projetos, cada um com um arquivo project.json. O project.json define as tarefas de um projeto, conhecidas como targets, que definem como um projeto é construído, executado localmente, testado, etc. Ele também define dependências entre targets dentro ou entre projetos.
Por exemplo, um project.json pode definir um target build que depende de todos os projetos upstream serem construídos primeiro:
{ "name": "@my-workspace/my-project", "targets": { "build": { "executor": "@nx/js:tsc", "dependsOn": ["^build"] }, "test": { "command": "vitest run" } }}Para detalhes sobre como projetos TypeScript e Python são configurados, consulte os guias dos geradores ts#project e py#project.
Caching
Seção intitulada “Caching”Nx armazena em cache a saída de targets executados anteriormente e os reproduz quando as entradas não mudaram. Isso acelera dramaticamente builds, testes e linting — especialmente em CI. Se você encontrar comportamento obsoleto ou inesperado, redefina o cache com:
pnpm nx resetyarn nx resetnpx nx resetbunx nx resetPara mais detalhes, consulte a documentação de caching do Nx.
Política de Versão Única
Seção intitulada “Política de Versão Única”A configuração padrão do monorepo usa uma política de versão única para projetos baseados em Node e Python.
Isso significa que todos os projetos dentro do seu monorepo usam a mesma versão de dependências por padrão, reduzindo problemas relacionados a pacotes no mesmo monorepo encontrando problemas de incompatibilidade de versão.
De uma perspectiva Node, isso significa um único lockfile na raiz com um único node_modules contendo todas as dependências. Se você precisar adicionar uma nova dependência, adicione-a no package.json raiz.
De uma perspectiva Python, isso significa um único .venv na raiz do monorepo com todas as dependências instaladas nele. Cada projeto Python tem seu próprio pyproject.toml, mas as versões dessas dependências são gerenciadas pelo workspace UV e subsequentemente escritas no arquivo uv.lock na raiz.
Comandos Comuns
Seção intitulada “Comandos Comuns”Construir todos os projetos no workspace:
pnpm buildyarn buildnpm run buildbun buildFazer lint e corrigir automaticamente todos os projetos:
pnpm lintyarn lintnpm run lintbun lintExecutar testes em todos os projetos:
pnpm testyarn testnpm run testbun testSe você tem um website, inicie-o e todos os componentes conectados localmente:
pnpm devyarn devnpm run devbun devExecute quaisquer geradores de sincronização, que por exemplo sincronizam referências de projeto TypeScript (consulte o guia do gerador ts#project para mais detalhes):
pnpm nx syncyarn nx syncnpx nx syncbunx nx syncExecutar Targets Específicos
Seção intitulada “Executar Targets Específicos”Você pode executar targets específicos para projetos específicos com:
pnpm nx <target> <project>yarn nx <target> <project>npx nx <target> <project>bunx nx <target> <project>Por exemplo:
pnpm nx build websiteyarn nx build websitenpx nx build websitebunx nx build websiteIsso executará o target escolhido, bem como os targets dos quais ele depende.
O Que Está Incluído
Seção intitulada “O Que Está Incluído”Linting
Seção intitulada “Linting”Novos workspaces são configurados com ESLint para análise estática e Prettier para formatação de código. Executar lint aplica ambos a todos os projetos.
Git Secrets
Seção intitulada “Git Secrets”Novos workspaces incluem hooks de pré-commit do git-secrets que verificam arquivos preparados em busca de padrões de credenciais AWS antes de cada commit. Isso previne o commit acidental de chaves de acesso, chaves secretas e outros valores sensíveis.
Suprimindo Falsos Positivos
Seção intitulada “Suprimindo Falsos Positivos”Padrões no git-secrets usam expressões regulares compatíveis com egrep. Se o git-secrets bloquear um commit que não contém credenciais reais:
# Permitir um padrão regex específicogit secrets --add --allowed 'my-regex-pattern'
# Permitir uma string literal (caracteres especiais são escapados)git secrets --add --allowed --literal 'my-literal+string'Você também pode criar um arquivo .gitallowed na raiz do repositório com uma regex compatível com egrep por linha (compartilhado com sua equipe via controle de versão):
# Allow test fixturestests/fixtures/.*# Allow a specific stringEXAMPLE[A-Z]{16}Para detalhes completos sobre gerenciamento de padrões, consulte a documentação do git-secrets.
Configuração do Nx Plugin for AWS
Seção intitulada “Configuração do Nx Plugin for AWS”O workspace vem com um arquivo aws-nx-plugin.config.mts na raiz. Os geradores leem este arquivo para escolher padrões sensatos, para que você não precise passar as mesmas flags toda vez. Duas configurações são particularmente úteis:
// aws-nx-plugin.config.mtsimport { AwsNxPluginConfig } from '@aws/nx-plugin';
export default { iac: { provider: 'CDK', // or 'Terraform' }, containers: { engine: 'docker', // or 'finch' },} satisfies AwsNxPluginConfig;iac.provider— o provedor de infraestrutura como código padrão (CDKouTerraform) usado por geradores que emitem infraestrutura (por exemplo,ts#infra,ts#trpc-api,py#fast-api). Geradores que aceitam uma flag--iacProvidertêm como padrãoInherit, que lê este valor.containers.engine— a CLI de contêiner (dockeroufinch) incorporada nos comandos de build/push/login gerados. Builds de image-asset do CDK também capturam isso através da variável de ambienteCDK_DOCKER. Consulte o guia de bundling Docker para detalhes.
Você pode editar qualquer uma das configurações a qualquer momento — execuções subsequentes do gerador irão capturar o novo valor.