

亚马逊 CodeCatalyst 不再向新买家开放。现有客户可以继续正常使用该服务。有关更多信息，请参阅 [如何从中迁移 CodeCatalyst](migration.md)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 访问上下文对象以获取项目详细信息
<a name="context-objects-lm"></a>

作为蓝图作者，您可以在合成过程中访问蓝图项目的上下文，以便获取空间名称、项目名称或项目源存储库中的现有文件等信息。您还可以获取诸如蓝图正在生成的重新合成阶段之类的详细信息。例如，您可以访问上下文，以便了解您是要重新同步以生成原级捆绑包还是建议的捆绑包。之后，您可以使用现有的代码上下文来转换存储库中的代码。例如，您可以编写自己的重新合成策略来设置特定的代码标准。可以将策略添加到小型蓝图的 `blueprint.ts` 文件中，也可以为策略创建单独的文件。

以下示例说明如何在项目的上下文中查找文件、设置工作流生成器以及为特定文件设置蓝图提供的重新合成策略：

```
const contextFiles = this.context.project.src.findAll({
      fileGlobs: ['**/package.json'],
    });

    // const workflows = this.context.project.src.findAll({
    //   fileGlobs: ['**/.codecatalyst/**.yaml'],
    // });

    const security = new WorkflowBuilder(this, {
      Name: 'security-workflow',
    });
    new Workflow(this, repo, security.getDefinition());
    repo.setResynthStrategies([
      {
        identifier: 'force-security',
        globs: ['**/.codecatalyst/security-workflow.yaml'],
        strategy: MergeStrategies.alwaysUpdate,
      },
    ]);


    for (const contextFile of contextFiles) {
      const packageObject = JSON.parse(contextFile.buffer.toString());
      new SourceFile(internalRepo, contextFile.path, JSON.stringify({
        ...packageObject,
      }, null, 2));
    }
  }
```