{"id":35228011,"url":"https://github.com/cdklabs/cdklabs-projen-project-types","last_synced_at":"2026-05-14T20:01:20.123Z","repository":{"id":196255638,"uuid":"576069259","full_name":"cdklabs/cdklabs-projen-project-types","owner":"cdklabs","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-14T18:31:24.000Z","size":4353,"stargazers_count":11,"open_issues_count":3,"forks_count":3,"subscribers_count":11,"default_branch":"main","last_synced_at":"2026-05-14T19:11:05.017Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cdklabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-12-08T23:58:20.000Z","updated_at":"2026-05-14T18:28:41.000Z","dependencies_parsed_at":"2023-10-24T19:24:54.285Z","dependency_job_id":"eb6cacd3-555a-49f9-9de6-20b058c930bc","html_url":"https://github.com/cdklabs/cdklabs-projen-project-types","commit_stats":null,"previous_names":["cdklabs/cdklabs-projen-project-types"],"tags_count":300,"template":false,"template_full_name":"amazon-archives/__template_Apache-2.0","purl":"pkg:github/cdklabs/cdklabs-projen-project-types","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdklabs%2Fcdklabs-projen-project-types","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdklabs%2Fcdklabs-projen-project-types/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdklabs%2Fcdklabs-projen-project-types/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdklabs%2Fcdklabs-projen-project-types/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cdklabs","download_url":"https://codeload.github.com/cdklabs/cdklabs-projen-project-types/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdklabs%2Fcdklabs-projen-project-types/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33041204,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-12-30T01:44:58.633Z","updated_at":"2026-05-14T20:01:18.077Z","avatar_url":"https://github.com/cdklabs.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cdklabs Projen Project Types\n\nThis repository stores custom project types extended from `projen` with cdklabs defaults\nbaked in. This is meant to serve as a hook for continuous management of all repos we own.\nWith cdklabs projen types, we can add new configuration as they come up and have it\npropagate to all repositories using the type.\n\n## CdklabsConstructLibrary\n\nThis type extends projen's `awscdk.AwsConstructLibrary` project type and should be used in place\nof that type.\n\n### Usage\n\nFrom the command line:\n\n```bash\nnpx projen new --from cdklabs-projen-project-types cdklabs-construct-lib\n```\n\nFrom inside `cdk-ops`:\n\n```ts\nthis.cdklabs.addPreApprovedRepo({\n  repo: 'cdk-new-lib',\n  owner: 'conroyka@amazon.com',\n  createWith: {\n    projectType: ProjectType.CDKLABS_MANAGED_CONSTRUCT_LIB,\n  },\n});\n```\n\n### Features\n\n- `cdklabsPublishingDefaults`\n\nBy default, this is turned on. `cdklabsPublishingDefaults` provides publishing defaults based off\nof the project's name. Specifically, the defaults look like this:\n\n```ts\nreturn {\n  publishToPypi: {\n    distName: npmPackageName,\n    module: changeDelimiter(npmPackageName, '_'),\n  },\n  publishToMaven: {\n    javaPackage: `io.github.cdklabs.${changeDelimiter(npmPackageName, '.')}`,\n    mavenGroupId: 'io.github.cdklabs',\n    mavenArtifactId: npmPackageName,\n    mavenEndpoint: 'https://s01.oss.sonatype.org',\n  },\n  publishToNuget: {\n    dotNetNamespace: `Cdklabs${upperCaseName(npmPackageName)}`,\n    packageId: `Cdklabs${upperCaseName(npmPackageName)}`,\n  },\n  publishToGo: {\n    moduleName: `${npmPackageName}-go`,\n  },\n};\n```\n\nAdditionally, we also require that we publish to all jsii language targets (including go) when\nwe specify a library as `stable`.\n\n- `private`\n\nBy default, a project is created as `private`. Turning this off simply means setting `private: false`.\nA project being `private` means it gets certain properties set as default that are true for private\nprojects. Today, that means setting `private: true` in `package.json`, removing `.mergify.yml` from\nthe project, and removing `.npmignore`.\n\n- `releasableCommits`\n\nBy default this project type releases `ReleasableCommits.featuresAndFixes`, to not release a new\nversion every day on a package that only sees devDependency updates. You may want to override this\nif you need something more specific.\n\n## CdklabsTypeScriptProject\n\nThis type extends projen's `typescript.TypeScriptProject` project type and should be used in place\nof that type.\n\n### Usage\n\n```bash\nnpx projen new --from cdklabs-projen-project-types cdklabs-ts-proj\n```\n\nFrom inside `cdk-ops`:\n\n```ts\nthis.cdklabs.addPreApprovedRepo({\n  repo: 'cdk-new-lib',\n  owner: 'conroyka@amazon.com',\n  createWith: {\n    projectType: ProjectType.CDKLABS_MANAGED_TS_PROJECT,\n  },\n});\n```\n\n### Features\n\n- `private`\n\nBy default, a project is created as `private`. Turning this off simply means setting `private: false`.\nA project being `private` means it gets certain properties set as default that are true for private\nprojects. Today, that means setting `private: true` in `package.json`, removing `.mergify.yml` from\nthe project, and removing `.npmignore`.\n\n## CdklabsMonorepo\n\nA TypeScript monorepo using Yarn Workspaces.\nIndividual workspaces can be added with `yarn.TypeScriptWorkspace` which extends projen's `typescript.TypeScriptProject`.\n\n### Usage\n\n```bash\nnpx projen new --from cdklabs-projen-project-types cdklabs-yarn-monorepo\n```\n\n### Features\n\n```ts\nconst project = new yarn.CdkLabsMonorepo({\n  defaultReleaseBranch: \"main\",\n  devDeps: [\"cdklabs-projen-project-types\"],\n  name: \"monorepo\",\n});\n```\n\n- Workspace commands: `projen build|compile|package|test|upgrade`\\\nWill run the specific command in all workspaces and the root if applicable.\n\n- Workspace run: `projen run \u003ccommand\u003e`\\\nExecutes the given command in all workspaces\n\n- Automatic dependency installation\\\nThe monorepo will know if a dependency has been added for a workspace and run `yarn install` as part of `projen`\n\n- `projen` at any level\\\nThe default `projen` command can be run in any workspace and will execute the monorepo synth command.\n\n- Release\\\nThis feature is not supported at this time.\nAny release functionality must be implemented.\n\n- `vscodeWorkspace: boolean`\\\nYou can specify if a VSCode Workspace file should be created for the monorepo.\n\n#### Workspaces\n\n```ts\nnew yarn.TypeScriptWorkspace({\n  parent: project,\n  name: 'workspace'\n})\n```\n\n- `parent: yarn.Monorepo`\\\nWorkspaces (aka subprojects) must be added using the `parent` option.\n\n- `workspaceScope: string`\\\nThe location the workspace is placed at. Defaults to `./packages`\n\n- `excludeDepsFromUpgrade: Array\u003cstring\u003e`\\\nList any dependencies that should not be updated in the workspace.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdklabs%2Fcdklabs-projen-project-types","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcdklabs%2Fcdklabs-projen-project-types","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdklabs%2Fcdklabs-projen-project-types/lists"}