Espacio de trabajo
Cuando creas un nuevo espacio de trabajo con @aws/nx-plugin, el generador de preset configura un monorepo de Nx con valores predeterminados sensatos para construir en AWS.
Crear un espacio de trabajo
Sección titulada «Crear un espacio de trabajo»pnpm create @aws/nx-workspace my-projectyarn create @aws/nx-workspace my-projectnpm create @aws/nx-workspace -- my-projectbun create @aws/nx-workspace my-projectOpciones
Sección titulada «Opciones»| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
| addTsPlugin | boolean | true | Si se debe agregar el plugin de ts. |
| iacProvider | string | CDK | El proveedor de IaC preferido. |
| gitSecrets | boolean | true | Si se debe configurar git-secrets para prevenir el commit de credenciales de AWS. |
| containerEngine | string | infer | El motor de contenedores a utilizar para build/push/login. 'infer' selecciona docker si está instalado, de lo contrario finch (recurriendo a docker cuando ninguno está instalado). |
Estructura del espacio de trabajo
Sección titulada «Estructura del espacio de trabajo»Directoriopackages/ Tus proyectos viven aquí
- …
- package.json package.json raíz para tu monorepo
- nx.json Configuración de Nx (targets comunes, generadores de sincronización, caché)
- tsconfig.base.json Configuración raíz de TypeScript
- aws-nx-plugin.config.mts Configuración del Nx Plugin for AWS
Directorio.git-secrets/ Script bash de git-secrets incluido para escaneo de credenciales
- …
Directorio.husky/ Hooks de Git
- …
Nx es un sistema de construcción agnóstico del lenguaje para monorepos, que gestiona dependencias entre proyectos escritos en cualquier lenguaje de programación y las tareas para construirlos. Puedes aprender más en el sitio web de Nx.
Proyectos
Sección titulada «Proyectos»Un monorepo de Nx está compuesto por uno o más proyectos, cada uno con un archivo project.json. El project.json define las tareas de un proyecto, conocidas como targets, que definen cómo se construye un proyecto, se ejecuta localmente, se prueba, etc. También define dependencias entre targets dentro o entre proyectos.
Por ejemplo, un project.json podría definir un target build que depende de que todos los proyectos upstream se construyan primero:
{ "name": "@my-workspace/my-project", "targets": { "build": { "executor": "@nx/js:tsc", "dependsOn": ["^build"] }, "test": { "command": "vitest run" } }}Para detalles sobre cómo se configuran los proyectos de TypeScript y Python, consulta las guías de generadores ts#project y py#project.
Nx almacena en caché la salida de targets ejecutados previamente y los reproduce cuando las entradas no han cambiado. Esto acelera dramáticamente las construcciones, pruebas y linting — especialmente en CI. Si encuentras un comportamiento obsoleto o inesperado, reinicia la caché con:
pnpm nx resetyarn nx resetnpx nx resetbunx nx resetPara más detalles, consulta la documentación de caché de Nx.
Política de versión única
Sección titulada «Política de versión única»La configuración predeterminada del monorepo usa una política de versión única tanto para proyectos basados en Node como en Python.
Esto significa que todos los proyectos dentro de tu monorepo usan la misma versión de dependencias por defecto, reduciendo problemas relacionados con paquetes en el mismo monorepo que encuentran problemas de desajuste de versiones.
Desde una perspectiva de Node, esto significa un único archivo de bloqueo en la raíz con un único node_modules que contiene todas las dependencias. Si necesitas agregar una nueva dependencia, agrégala en el package.json raíz.
Desde una perspectiva de Python, esto significa un único .venv en la raíz del monorepo con todas las dependencias instaladas en él. Cada proyecto de Python tiene su propio pyproject.toml, pero las versiones de esas dependencias son gestionadas por el espacio de trabajo UV y posteriormente escritas en el archivo uv.lock en la raíz.
Comandos comunes
Sección titulada «Comandos comunes»Construir todos los proyectos en el espacio de trabajo:
pnpm buildyarn buildnpm run buildbun buildLint y auto-corrección de todos los proyectos:
pnpm lintyarn lintnpm run lintbun lintEjecutar pruebas en todos los proyectos:
pnpm testyarn testnpm run testbun testSi tienes un sitio web, inícialo junto con todos los componentes conectados localmente:
pnpm devyarn devnpm run devbun devEjecutar cualquier generador de sincronización, que por ejemplo sincronizan referencias de proyectos de TypeScript (consulta la guía del generador ts#project para más detalles):
pnpm nx syncyarn nx syncnpx nx syncbunx nx syncEjecutar targets específicos
Sección titulada «Ejecutar targets específicos»Puedes ejecutar targets específicos para proyectos específicos con:
pnpm nx <target> <project>yarn nx <target> <project>npx nx <target> <project>bunx nx <target> <project>Por ejemplo:
pnpm nx build websiteyarn nx build websitenpx nx build websitebunx nx build websiteEsto ejecutará el target elegido así como los targets de los que depende.
Qué está incluido
Sección titulada «Qué está incluido»Linting
Sección titulada «Linting»Los nuevos espacios de trabajo están configurados con ESLint para análisis estático y Prettier para formateo de código. Ejecutar lint aplica ambos a todos los proyectos.
Git Secrets
Sección titulada «Git Secrets»Los nuevos espacios de trabajo incluyen hooks de pre-commit de git-secrets que escanean archivos preparados en busca de patrones de credenciales de AWS antes de cada commit. Esto previene el commit accidental de claves de acceso, claves secretas y otros valores sensibles.
Suprimir falsos positivos
Sección titulada «Suprimir falsos positivos»Los patrones en git-secrets usan expresiones regulares compatibles con egrep. Si git-secrets bloquea un commit que no contiene credenciales reales:
# Permitir un patrón regex específicogit secrets --add --allowed 'my-regex-pattern'
# Permitir una cadena literal (los caracteres especiales se escapan)git secrets --add --allowed --literal 'my-literal+string'También puedes crear un archivo .gitallowed en la raíz del repositorio con una expresión regular compatible con egrep por línea (compartido con tu equipo a través del control de versiones):
# Allow test fixturestests/fixtures/.*# Allow a specific stringEXAMPLE[A-Z]{16}Para detalles completos sobre la gestión de patrones, consulta la documentación de git-secrets.
Configuración del Nx Plugin for AWS
Sección titulada «Configuración del Nx Plugin for AWS»El espacio de trabajo incluye un archivo aws-nx-plugin.config.mts en la raíz. Los generadores leen este archivo para elegir valores predeterminados sensatos, de modo que no tengas que pasar las mismas banderas cada vez. Dos configuraciones son particularmente útiles:
// 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— el proveedor de infraestructura como código predeterminado (CDKoTerraform) utilizado por los generadores que emiten infraestructura (por ejemplo,ts#infra,ts#trpc-api,py#fast-api). Los generadores que aceptan una bandera--iacProvidertienen como valor predeterminadoInherit, que lee este valor.containers.engine— la CLI de contenedores (dockerofinch) integrada en los comandos generados de build/push/login. Las construcciones de image-asset de CDK también toman esto a través de la variable de entornoCDK_DOCKER. Consulta la guía de empaquetado de Docker para más detalles.
Puedes editar cualquiera de estas configuraciones en cualquier momento — las ejecuciones posteriores del generador tomarán el nuevo valor.