# @alma-cdk/project 中文文档

规范地址：https://npmcn.com/package/%40alma-cdk/project/

版本：3\.0\.1
npm 元数据更新时间：2026-08-10T14:06:02.388Z
中文译文更新时间：2026-11-05T22:54:36.184Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40alma-cdk/project
原文对照：https://npmcn.com/package/%40alma-cdk/project/?lang=original
项目主页：https://github.com/alma-cdk/project#readme
源码仓库：https://github.com/alma-cdk/project

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：4.4 MB，444 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>= 22 \<= 26
- 运行依赖：2 个
- peer 依赖：aws-cdk-lib ^2\.260\.0，constructs ^10\.7\.2
- 首次发布：2022-08-16T06:41:08.989Z
- 最新版本发布：2026-08-10T14:06:01.935Z
- 近 30 天下载量：10361（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：53（近 12 个月 7 个）

## 中文简介

“框架”项目

## 安装

```sh
npm install @alma-cdk/project
```

也可以使用：`pnpm add @alma-cdk/project`、`yarn add @alma-cdk/project`、`bun add @alma-cdk/project`

## README

# ![Alma CDK Project](https://npmcn.com/package/%40alma-cdk/project/assets/alma-cdk-project.svg)  
  

![Stability: Stable](https://img.shields.io/badge/stability-stable-%234BCA2A) ![Versioning: SemVer 2.0.0](https://img.shields.io/badge/versioning-semver_2.0.0-blue) [![release](https://github.com/alma-cdk/project/actions/workflows/release.yml/badge.svg)](https://github.com/alma-cdk/project/actions/workflows/release.yml) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=alma-cdk_project&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=alma-cdk_project) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=alma-cdk_project&metric=coverage)](https://sonarcloud.io/summary/new_code?id=alma-cdk_project)

* * *

> \[Tip\] 从 `v0` 改为 `v1`看到了吗 [移徙指南](https://npmcn.com/docs/MIGRATION-GUIDE-0-to-1.md)。 。 。 .

  

有意见的CDK“框架”,包括下列建筑和公用事业:

-   向多个账户部署多个环境(多对多关系)
    
-   通过标准化道具管理账户配置(不再随机配置文件)
    
-   查询您的 CDK 代码中的账户和/或环境特定信息
    
-   动态和短寿命“环境”
    
-   启用定义明确的标记
    
-   为CDK项目提供结构和共同公约
    
-   通过运行时上下文来选择目标账户和环境( e) :
    
    ```sh
    npx cdk deploy -c account=dev -c environment=feature/abc-123
    ```
    
    ...这意味着你不需要预先定义所有可能的环境!
    

## 账户策略

根据使用大小写的不同,您可以在1-3 AWS 账户中选择配置,其环境如下:

1.  **共用账户`shared`(中文(简体) )**数字 :
    
    ![default-multi](https://npmcn.com/package/%40alma-cdk/project/assets/accounts-1x.svg)  
    
2.  **多账户`dev`\+ 键`prod`(中文(简体) )**_建议_数字 :
    
    ![default-multi](https://npmcn.com/package/%40alma-cdk/project/assets/accounts-2x.svg)  
    

  

3.  **多账户`dev`\+ 键`preprod`\+ 键`prod`(中文(简体) )**数字 :
    
    ![default-multi](https://npmcn.com/package/%40alma-cdk/project/assets/accounts-3x.svg)  
    

  

## 开始

A. 界定《公约》 _环境_ 项目资源; 一开始,它可能看起来很复杂 但一旦你进入 定义你的项目 这种方式开始有意义:

1.  选择您的 [账户战略](https://npmcn.com/package/%40alma-cdk/project/#readme-account-strategies)
    
2.  初始化一个新的 `Project` 改为 `cdk.App`数字 :
    
    ```ts
    // bin/app.ts
    import { Project, AccountStrategy } from '@alma-cdk/project';
    
    const project = new Project({
      // Basic info, you could also read these from package.json if you want
      name: 'my-cool-project',
      author: {
        organization: 'Acme Corp',
        name: 'Mad Scientists',
        email: 'mad.scientists@acme.example.com',
      },
    
      // If not set, defaults to one of: $CDK_DEFAULT_REGION, $AWS_REGION or us-east-1
      defaultRegion: 'eu-west-1',
    
      // Configures the project to use 2 AWS accounts (recommended)
      accounts: AccountStrategy.two({
        dev: {
          id: '111111111111',
          config: {
            // whatever you want here as [string]: any
            baseDomain: 'example.net',
          },
        },
        prod: {
          id: '222222222222',
          config: {
            // whatever you want here as [string]: any
            baseDomain: 'example.com',
          },
        },
      }),
    })
    ```
    
3.  定义堆栈 `extends SmartStack` 资源:
    
    ```ts
    // lib/my-stack.ts
    import { Construct } from 'constructs';
    import { StackProps, RemovalPolicy } from 'aws-cdk-lib';
    import { SmartStack, Name, UrlName, PathName, EC } from '@alma-cdk/project';
    
    export class MyStack extends SmartStack {
      constructor(scope: Construct, id: string, props: StackProps) {
        super(scope, id, props);
    
        new dynamodb.Table(this, 'Table', {
          removalPolicy: EC.isStable(this) ? RemovalPolicy.RETAIN : RemovalPolicy.DESTROY,
    
          tableName: Name.it(this, 'MyTable'),
          partitionKey: {
            type: dynamodb.AttributeType.STRING,
            name: 'pk',
          },
          // StagingMyTable
        });
    
        new events.EventBus(this, 'EventBus', {
          eventBusName: Name.withProject(this, 'MyEventBus'),
          // MyCoolProjectStagingMyEventBus
        });
    
        new s3.Bucket(this, 'Bucket', {
    
          removalPolicy: EC.isStable(this) ? RemovalPolicy.RETAIN : RemovalPolicy.DESTROY,
          autoDeleteObjects: EC.isStable(this) ? false : true,
    
          bucketName: UrlName.globally(this, 'MyBucket'),
          // acme-corp-my-cool-project-feature-foo-bar-my-bucket
        });
    
        new ssm.StringParameter(this, 'Parameter', {
          stringValue: 'Foo',
          tier: ssm.ParameterTier.ADVANCED,
          parameterName: PathName.withProject(this, 'MyNamespace/MyParameter'),
          // /MyCoolProject/Staging/MyNamespace/MyParameter
        });
      }
    }
    ```
    
4.  定义新 _环境_ 哪个 `extends EnvironmentWrapper` 并初始化所有环境 `SmartStack` 在 :
    
    ```ts
    // lib/environment.ts
    import { Construct } from 'constructs';
    import { EnvironmentWrapper } from '@alma-cdk/project';
    import { MyStack } from './my-stack';
    
    export class Environment extends EnvironmentWrapper {
      constructor(scope: Construct) {
        super(scope);
        new MyStack(this, 'MyStack', { description: 'This is required' });
      }
    }
    ```
    
    生成堆栈属性( 已提供) `environment=staging`:
    
    | 财产 | 示例值 |
    | :-- | :-- |
    | `stackName` | `"MyCoolProject-Environment-Staging-MyExampleStack"` |
    | `terminationProtection` | `true` |
    | `env.account` | `"111111111111"` |
    | `env.region` | `"eu-west-1"` |
    
    生成堆栈及其资源的标记( 已提供) `environment=staging`:
    
    | 财产 | 示例值 |
    | :-- | :-- |
    | `Account` | `dev` |
    | `Environment` | `staging` |
    | `Project` | `my-cool-project` |
    | `Author` | `Mad Scientists` |
    | `Organization` | `Acme Corp` |
    | `Contact` | `mad.scientists@acme.example.com` |
    
5.  最后将环境与 `Project` 范围 :
    
    ```ts
    // bin/app.ts
    import { Project, Accounts } from '@alma-cdk/project';
    import { Environment } from '../lib/environment';
    
    const project = new Project({/* removed for brevity, see step 1 */})
    
    new Environment(project);
    ```
    

  

## 文档

请参看关于特定类别和方法的详细文档 [构造.dev](http://constructs.dev/packages/@alma-cdk/project)。 。 。 .

一般来说,你最感兴趣的是:

-   项目
-   账户战略
-   智能软件
-   账户
-   账户连接( AC)
-   环境联系( EC)
-   名称 / UrlName / 路径Name

### 移徙指南

从 `v0` 改为 `v1`看到了吗 [移徙指南](https://npmcn.com/docs/MIGRATION-GUIDE-0-to-1.md)。 。 。 .

### 路线图

现在看 [问题36](https://github.com/alma-cdk/project/issues/36)。 。 。 .

## 常见问题

### @alma-cdk/project 是什么？

“框架”项目

### 如何安装 @alma-cdk/project？

在项目目录运行 npm install @alma-cdk/project，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：aws-cdk-lib（^2\.260\.0）、constructs（^10\.7\.2）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @alma-cdk/project 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @alma-cdk/project 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @alma-cdk/project 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>= 22 \<= 26。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @alma-cdk/project 可以商用吗？

@alma-cdk/project 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @alma-cdk/project 的下载量有多少？

根据 npm 官方下载统计，@alma-cdk/project 在 2026/10/06 – 2026/11/04 这 30 天内被下载 10,361 次，日均约 345 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @alma-cdk/project 还在维护吗？

最新版本 3\.0\.1 发布于 2026/08/10（2 个月前）；至今共发布 53 个版本，其中过去 12 个月发布了 7 个；首次发布于 2022/08/16。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

