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 |
|---|---|---|---|
| iac | cdk | terraform | cdk | O provedor de IaC preferido. |
| gitSecrets | boolean | true | Se deve configurar git-secrets para prevenir o commit de credenciais AWS. |
| mcp | boolean | true | Se deve configurar o Nx Plugin para servidor AWS MCP para uso por agentes de codificação. |
| containers | infer | docker | finch | infer | O motor de contêineres a ser usado para build/push/login. 'infer' escolhe docker se instalado, caso contrário finch (voltando para docker quando nenhum estiver instalado). |
| module | esm | cjs | esm | Formato de módulo para código TypeScript e configuração gerados. |
| catalog | boolean | true | Se os geradores registram as versões de dependências no catálogo do gerenciador de pacotes (pnpm/yarn/bun), mantendo uma única fonte de verdade para versões. Quando false, as dependências são escritas diretamente no package.json de cada projeto e manter as versões alinhadas é sua responsabilidade. |
| preferInstallDependencies | boolean | true | Se deve preferir instalar dependências após a execução do gerador. Defina como false para adiar a instalação ao executar múltiplos geradores em lote (uma instalação ainda é executada se necessário para que geradores subsequentes possam calcular o grafo de projetos Nx); instale uma vez no final. |
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
- …
- .mcp.json Configuração do servidor MCP do Nx Plugin for AWS para Claude Code
- .cursor/mcp.json …e para Cursor
- .kiro/settings/mcp.json …e para Kiro
- .gemini/settings.json …e para Gemini CLI
- .vscode/mcp.json …e para GitHub Copilot
- .codex/config.toml …e para OpenAI Codex
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 dependências instaladas uma vez e vinculadas a cada projeto. Cada projeto Node declara as dependências de runtime que seu código-fonte importa em seu próprio package.json, enquanto ferramentas compartilhadas de build/teste ficam no devDependencies do package.json raiz. Adicione uma dependência de runtime de um projeto instalando-a nesse projeto:
pnpm add some-npm-package --filter my-projectyarn workspace @my-scope/my-project add some-npm-packagenpm install --legacy-peer-deps some-npm-package -w packages/my-projectbun add some-npm-package --cwd packages/my-projectPara gerenciadores de pacotes com suporte a catálogo (pnpm, yarn e bun), as versões de dependências são registradas no catálogo e referenciadas com o protocolo catalog:, mantendo uma única fonte de verdade para versões em todos os package.json dos projetos. Para npm workspaces, recomendamos syncpack para alinhar versões declaradas em múltiplos arquivos package.json.
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 testInicie todos os servidores de desenvolvimento locais em seu workspace:
pnpm devyarn devnpm run devbun devConsulte o guia Desenvolvimento Local para mais detalhes.
Execute 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 Biome para análise estática e formatação de código. Executar lint verifica problemas em todos os projetos, e lint --configuration=fix os corrige automaticamente.
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#api,py#api). Geradores que aceitam uma flag--iactê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.