Bỏ qua để đến nội dung

Thiết lập monorepo

Để tạo monorepo mới, từ thư mục mong muốn của bạn, chạy lệnh sau:

Terminal window
pnpm create @aws/nx-workspace dungeon-adventure --iac=cdk

Lệnh này sẽ thiết lập một NX monorepo trong thư mục dungeon-adventure. Khi bạn mở thư mục trong VSCode, bạn sẽ thấy cấu trúc tệp này:

  • Thư mục.nx/
  • Thư mục.vscode/
  • Thư mụcnode_modules/
  • Thư mụcpackages/ this is where your sub-projects will reside
  • .gitignore
  • biome.json configures Biome for linting and formatting
  • nx.json configures the Nx CLI and monorepo defaults
  • package.json all node dependencies are defined here
  • pnpm-lock.yaml or bun.lock, yarn.lock, package-lock.json depending on package manager
  • pnpm-workspace.yaml if using pnpm
  • README.md
  • tsconfig.base.json all node based sub-projects extend this
  • tsconfig.json
  • aws-nx-plugin.config.mts configuraton for the Nx Plugin for AWS

Nhiệm vụ 2: Khởi tạo Dungeon Adventure Game

Phần tiêu đề “Nhiệm vụ 2: Khởi tạo Dungeon Adventure Game”

Với workspace đã sẵn sàng, chúng ta khởi tạo các dự án con của trò chơi — Game API, Story Agent, Inventory MCP server, cơ sở dữ liệu trò chơi và website — cùng với các kết nối liên kết chúng lại với nhau. Có hai cách để thực hiện:

  • Nhanh — sao chép các lệnh trực tiếp từ sơ đồ bên dưới và chạy chúng. Đây là cách nhanh nhất để đạt được điểm khởi đầu tương tự.
  • Từng bước — mở rộng phần bên dưới để tự chạy từng generator và kiểm tra chính xác những gì mỗi generator tạo ra.

Sơ đồ bên dưới chính là workspace Dungeon Adventure: mọi dự án, thành phần và kết nối bạn sẽ xây dựng trong module này. Nhấn Copy commands để lấy toàn bộ chuỗi lệnh, sau đó chạy chúng từ trong thư mục dungeon-adventure bạn đã tạo ở Nhiệm vụ 1.

Loading the diagram…

Từng bước: tự chạy từng generator và xem những gì nó tạo ra

Nhiệm vụ 3: Cập nhật cơ sở hạ tầng của chúng ta

Phần tiêu đề “Nhiệm vụ 3: Cập nhật cơ sở hạ tầng của chúng ta”

Hãy cập nhật packages/infra/src/stacks/application-stack.ts để khởi tạo một số construct đã tạo của chúng ta:

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');
}
}
Bây giờ là lúc chúng ta build mã lần đầu tiên

Sử dụng dòng lệnh, chạy lệnh sau để sửa các vấn đề lint trước:

Terminal window
pnpm lint

Sau đó, chạy lệnh sau để build đầy đủ:

Terminal window
pnpm build

Bạn sẽ được nhắc với nội dung sau:

Terminal window
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 or contain outdated project references.
This will result in an error in CI.
? 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

Thông báo này cho biết NX đã phát hiện một số tệp có thể được cập nhật tự động cho bạn. Trong trường hợp này, nó đề cập đến các tệp tsconfig.json không có Typescript references được thiết lập trên các dự án được tham chiếu.

Chọn tùy chọn Yes, sync the changes and run the tasks để tiếp tục. Bạn sẽ nhận thấy tất cả các lỗi import liên quan đến IDE của bạn được tự động giải quyết khi generator sync sẽ tự động thêm các typescript references còn thiếu!

Tất cả các artifact đã build hiện có sẵn trong thư mục dist/ nằm ở gốc của monorepo. Đây là thực hành tiêu chuẩn khi sử dụng các dự án được tạo bởi @aws/nx-plugin vì nó không làm ô nhiễm cây tệp của bạn với các tệp được tạo ra. Trong trường hợp bạn muốn dọn dẹp các tệp của mình, hãy xóa thư mục dist/ mà không lo lắng về các artifact build bị rải rác khắp cây tệp.

Chúc mừng! Bạn đã tạo tất cả các dự án con cần thiết để bắt đầu triển khai phần cốt lõi của trò chơi AI Dungeon Adventure của chúng ta. 🎉🎉🎉