Pular para o conteúdo

Configurar um monorepo

Para criar um novo monorepo, dentro do diretório desejado, execute o seguinte comando:

Crie seu workspace@aws/nx-workspace

pnpm create @aws/nx-workspace dungeon-adventure --iac=cdk
Opções desta etapa2

Obrigatório

Isso configurará um monorepo NX dentro do diretório dungeon-adventure. Quando você abrir o diretório no VSCode, verá esta estrutura de arquivos:

  • Directory.nx/
    • …
  • Directory.vscode/
    • …
  • Directorynode_modules/
    • …
  • Directorypackages/ aqui é onde seus sub-projetos residirão
    • …
  • .gitignore
  • biome.json configura o Biome para linting e formatação
  • nx.json configura o CLI do Nx e os padrões do monorepo
  • package.json todas as dependências node são definidas aqui
  • pnpm-lock.yaml ou bun.lock, yarn.lock, package-lock.json dependendo do gerenciador de pacotes
  • pnpm-workspace.yaml se estiver usando pnpm
  • README.md
  • tsconfig.base.json todos os sub-projetos baseados em node estendem este
  • tsconfig.json
  • aws-nx-plugin.config.mts configuração para o Nx Plugin for AWS

Tarefa 2: Estruturar o Jogo de Aventura em Masmorra

Seção intitulada “Tarefa 2: Estruturar o Jogo de Aventura em Masmorra”

Com o workspace configurado, estruturamos os sub-projetos do jogo — a API do Jogo, Agente de História, servidor MCP de Inventário, banco de dados do jogo e website — juntamente com as conexões que os conectam. Existem duas maneiras de fazer isso:

  • Rápido — copie os comandos diretamente do diagrama abaixo e execute-os. A maneira mais rápida de chegar ao mesmo ponto de partida.
  • Passo a Passo — expanda a seção abaixo para executar cada gerador você mesmo e examinar exatamente o que cada um produz.

O diagrama abaixo é o workspace Dungeon Adventure: cada projeto, componente e conexão que você construirá neste módulo. Clique em Copy commands para pegar toda a série, depois execute-os de dentro do diretório dungeon-adventure que você criou na Tarefa 1.

Loading the diagram…

Passo a Passo: execute cada gerador você mesmo e veja o que ele produz

Vamos atualizar packages/infra/src/stacks/application-stack.ts para instanciar alguns dos nossos constructs gerados:

import {
GameApi,
GameUI,
InventoryMcpServer,
StoryAgent,
UserIdentity,
} from '@dungeon-adventure/common-constructs';
import { Stack, StackProps, CfnOutput } from 'aws-cdk-lib';
import { Construct } from 'constructs';
export class ApplicationStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
const userIdentity = new UserIdentity(this, 'UserIdentity');
const gameApi = new GameApi(this, 'GameApi', {
integrations: GameApi.defaultIntegrations(this).build(),
});
const mcpServer = new InventoryMcpServer(this, 'InventoryMcpServer');
// Use Cognito for user authentication with the agent
const storyAgent = new StoryAgent(this, 'StoryAgent', {
identity: userIdentity,
});
new CfnOutput(this, 'StoryAgentArn', {
value: storyAgent.agentCoreRuntime.agentRuntimeArn,
});
new CfnOutput(this, 'InventoryMcpArn', {
value: mcpServer.agentCoreRuntime.agentRuntimeArn,
});
// Grant the agent permissions to invoke our mcp server
mcpServer.grantInvokeAccess(storyAgent);
// Grant the authenticated role access to invoke the api
gameApi.grantInvokeAccess(userIdentity.identityPool.authenticatedRole);
new GameUI(this, 'GameUI');
}
}
Agora é hora de construirmos nosso código pela primeira vez

Usando a linha de comando, execute o seguinte comando para corrigir quaisquer problemas de lint primeiro:

Terminal window
pnpm lint

Em seguida, execute o seguinte comando para um build completo:

Terminal window
pnpm build

Você será solicitado com o seguinte:

Janela do terminal
NX The workspace is out of sync
[@nx/js:typescript-sync]: Some TypeScript configuration files are missing project references to the projects they depend on, contain stale project references, or have duplicate project references.
[@aws/nx-plugin:ts#sync]: Some files are out of sync.
? Would you like to sync the identified changes to get your workspace up to date? …
Yes, sync the changes and run the tasks
No, run the tasks without syncing the changes

Esta mensagem indica que o NX detectou alguns arquivos que podem ser atualizados automaticamente para você. Neste caso, está se referindo aos arquivos tsconfig.json que não têm referências Typescript configuradas em projetos referenciados.

Selecione a opção Yes, sync the changes and run the tasks para prosseguir. Você deve notar que todos os seus erros de importação relacionados ao IDE são resolvidos automaticamente, pois o gerador de sincronização adicionará as referências typescript ausentes automaticamente!

Todos os artefatos construídos agora estão disponíveis dentro da pasta dist/ localizada na raiz do monorepo. Esta é uma prática padrão ao usar projetos gerados pelo @aws/nx-plugin, pois não polui sua árvore de arquivos com arquivos gerados. No caso de você querer limpar seus arquivos, exclua a pasta dist/ sem se preocupar com artefatos de build espalhados por toda a árvore de arquivos.

Parabéns! Você criou todos os sub-projetos necessários para começar a implementar o núcleo do nosso jogo de Aventura em Masmorra com IA. 🎉🎉🎉