Workspace
Quando você cria um novo workspace com @aws/nx-plugin, o gerador 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/ Your projects live here
- …
- package.json Root package.json for your monorepo
- nx.json Nx configuration (common targets, sync generators, caching)
- tsconfig.base.json Root TypeScript configuration
- aws-nx-plugin.config.mts Nx Plugin for AWS configuration
Directory.git-secrets/ Vendored git-secrets bash script for credential scanning
- …
Directory.husky/ Git hooks
- …
- .mcp.json Nx Plugin for AWS MCP server configuration for Claude Code
- .cursor/mcp.json …and for Cursor
- .kiro/settings/mcp.json …and for Kiro
- .gemini/settings.json …and for Gemini CLI
- .vscode/mcp.json …and for GitHub Copilot
- .codex/config.toml …and for 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.
Nx faz cache da 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 cache 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/test ficam no devDependencies do package.json raiz. Adicione uma dependência de runtime de um projeto instalando-a naquele 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 cada package.json de cada projeto. 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 auto-corrigir todos os projetos:
pnpm lintyarn lintnpm run lintbun lintExecutar testes em todos os projetos:
pnpm testyarn testnpm run testbun testIniciar todos os servidores de desenvolvimento local em seu workspace:
pnpm devyarn devnpm run devbun devConsulte o guia de Desenvolvimento Local para mais detalhes.
Executar 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 todos os projetos em busca de problemas, 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 escaneiam arquivos staged em busca de padrões de credenciais AWS antes de cada commit. Isso evita commitar acidentalmente 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:
# Allow a specific regex patterngit secrets --add --allowed 'my-regex-pattern'
# Allow a literal string (special characters are escaped)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 (compartilhada 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, então você não precisa 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 via a variável de ambienteCDK_DOCKER. Consulte o guia de bundling Docker para detalhes.
Você pode editar qualquer configuração a qualquer momento — execuções subsequentes do gerador irão capturar o novo valor.