import { javascript, github, cdk, IgnoreFileOptions, GitOptions, awscdk, LoggerOptions, Project, ProjectType, ProjenrcJsonOptions, typescript, SampleReadmeProps, ReleasableCommits, release, RenovatebotOptions, GroupRunnerOptions } from 'projen'; import { RosettaOptions, OrgTenancy } from './'; /** * CdkConstructLibraryOptions */ export interface CdkConstructLibraryOptions { /** * Automatically add the resolved `packageManager` to `devEngines.packageManager` in `package.json`, setting `onFail` to `ignore`. * @default true */ readonly addPackageManagerToDevEngines?: boolean; /** * Allow the project to include `peerDependencies` and `bundledDependencies`. * This is normally only allowed for libraries. For apps, there's no meaning * for specifying these. * @default true */ readonly allowLibraryDependencies?: boolean; /** * A directory which will contain build artifacts. * @default "dist" */ readonly artifactsDirectory?: string; /** * Run security audit on dependencies. * When enabled, creates an "audit" task that checks for known security vulnerabilities * in dependencies. By default, runs during every build and checks for "high" severity * vulnerabilities or above in all dependencies (including dev dependencies). * @default false */ readonly auditDeps?: boolean; /** * Security audit options. * @default - default options */ readonly auditDepsOptions?: javascript.AuditOptions; /** * The name of the library author. * @default $GIT_USER_NAME */ readonly author: string; /** * Email or URL of the library author. * @default $GIT_USER_EMAIL */ readonly authorAddress: string; /** * Author's e-mail. */ readonly authorEmail?: string; /** * Author's name. */ readonly authorName?: string; /** * Is the author an organization. */ readonly authorOrganization?: boolean; /** * Author's URL / Website. */ readonly authorUrl?: string; /** * Enable and configure the 'auto approve' workflow. * @default - auto approve is disabled */ readonly autoApproveOptions?: github.AutoApproveOptions; /** * Automatically approve deps upgrade PRs, allowing them to be merged by mergify (if configured). * Throw if set to true but `autoApproveOptions` are not defined. * @default - true */ readonly autoApproveUpgrades?: boolean; /** * Automatically add all executables under the `bin` directory to your `package.json` file under the `bin` section. * @default true */ readonly autoDetectBin?: boolean; /** * Enable automatic merging on GitHub. * Has no effect if `github.mergify` * is set to false. * @default true */ readonly autoMerge?: boolean; /** * Configure options for automatic merging on GitHub. * Has no effect if * `github.mergify` or `autoMerge` is set to false. * @default - see defaults in `AutoMergeOptions` */ readonly autoMergeOptions?: github.AutoMergeOptions; /** * Binary programs vended with your module. * You can use this option to add/customize how binaries are represented in * your `package.json`, but unless `autoDetectBin` is `false`, every * executable file under `bin` will automatically be added to this section. */ readonly bin?: Record; /** * Setup Biome. * @default false */ readonly biome?: boolean; /** * Biome options. * @default - default options */ readonly biomeOptions?: javascript.BiomeOptions; /** * The email address to which issues should be reported. */ readonly bugsEmail?: string; /** * The url to your project's issue tracker. */ readonly bugsUrl?: string; /** * Define a GitHub workflow for building PRs. * @default - true if not a subproject */ readonly buildWorkflow?: boolean; /** * Options for PR build workflow. */ readonly buildWorkflowOptions?: javascript.BuildWorkflowOptions; /** * Build workflow triggers. * @default "{ pullRequest: {}, workflowDispatch: {} }" * @deprecated - Use `buildWorkflowOptions.workflowTriggers` */ readonly buildWorkflowTriggers?: github.workflows.Triggers; /** * The `commit-and-tag-version` compatible package used to bump the package version, as a dependency string. * This can be any compatible package version, including the deprecated `standard-version@9`. * @default - A recent version of "commit-and-tag-version" */ readonly bumpPackage?: string; /** * List of dependencies to bundle into this module. * These modules will be * added both to the `dependencies` section and `bundledDependencies` section of * your `package.json`. * * The recommendation is to only specify the module name here (e.g. * `express`). This will behave similar to `pnpm add` or `npm install` in the * sense that it will add the module as a dependency to your `package.json` * file with the latest version (`^`). You can specify semver requirements in * the same syntax passed to `pnpm add` or `npm i` (e.g. `express@^2`) and * this will be what your `package.json` will eventually include. */ readonly bundledDeps?: Array; /** * Options for `Bundler`. */ readonly bundlerOptions?: javascript.BundlerOptions; /** * The version of Bun to use if using Bun as a package manager. * @default "latest" */ readonly bunVersion?: string; /** * Libraries will be picked up by the construct catalog when they are published to npm as jsii modules and will be published under:. * https://awscdk.io/packages/[@SCOPE/]PACKAGE@VERSION * * The catalog will also post a tweet to https://twitter.com/awscdkio with the * package name, description and the above link. You can disable these tweets * through `{ announce: false }`. * * You can also add a Twitter handle through `{ twitter: 'xx' }` which will be * mentioned in the tweet. * @default - new version will be announced */ readonly catalog?: cdk.Catalog; /** * Warning: NodeJS only. * Install the * @default - will be included by default for AWS CDK >= 1.0.0 < 2.0.0 * @deprecated The */ readonly cdkAssert?: boolean; /** * Install the assertions library? * Only needed for CDK 1.x. If using CDK 2.x then * assertions is already included in 'aws-cdk-lib' * @default - will be included by default for AWS CDK >= 1.111.0 < 2.0.0 */ readonly cdkAssertions?: boolean; /** * Version range of the AWS CDK CLI to depend on. * Can be either a specific version, or an NPM version range. * * By default, the latest 2.x version will be installed; you can use this * option to restrict it to a specific version or version range. * @default "^2" */ readonly cdkCliVersion?: string; /** * Which AWS CDKv1 modules this project requires. * @deprecated For CDK 2.x use "deps" instead. (or "peerDeps" if you're building a library) */ readonly cdkDependencies?: Array; /** * If this is enabled (default), all modules declared in `cdkDependencies` will be also added as normal `dependencies` (as well as `peerDependencies`). * This is to ensure that downstream consumers actually have your CDK dependencies installed * when using npm < 7 or yarn, where peer dependencies are not automatically installed. * If this is disabled, `cdkDependencies` will be added to `devDependencies` to ensure * they are present during development. * * Note: this setting only applies to construct library projects * @default true * @deprecated Not supported in CDK v2. */ readonly cdkDependenciesAsDeps?: boolean; /** * AWS CDK modules required for testing. * @deprecated For CDK 2.x use 'devDeps' (in node.js projects) or 'testDeps' (in java projects) instead */ readonly cdkTestDependencies?: Array; /** * Minimum version of the AWS CDK to depend on. * @default "2.189.1" */ readonly cdkVersion: string; /** * Use pinned version instead of caret version for CDK. * You can use this to prevent mixed versions for your CDK dependencies and to prevent auto-updates. * If you use experimental features this will let you define the moment you include breaking changes. */ readonly cdkVersionPinning?: boolean; /** * Configure which licenses should be deemed acceptable for use by dependencies. * This setting will cause the build to fail, if any prohibited or not allowed licenses ares encountered. * @default - no license checks are run during the build and all licenses will be accepted */ readonly checkLicenses?: javascript.LicenseCheckerOptions; /** * Add a `clobber` task which resets the repo to origin. * @default - true, but false for subprojects */ readonly clobber?: boolean; /** * Options for npm packages using AWS CodeArtifact. * This is required if publishing packages to, or installing scoped packages from AWS CodeArtifact * @default - undefined */ readonly codeArtifactOptions?: javascript.CodeArtifactOptions; /** * Define a GitHub workflow step for sending code coverage metrics to https://codecov.io/ Uses codecov/codecov-action@v5 By default, OIDC auth is used. Alternatively a token can be provided via `codeCovTokenSecret`. * @default false */ readonly codeCov?: boolean; /** * Define the secret name for a specified https://codecov.io/ token. * @default - OIDC auth is used */ readonly codeCovTokenSecret?: string; /** * Whether to commit the managed files by default. * @default true */ readonly commitGenerated?: boolean; /** * Automatically run API compatibility test against the latest version published to npm after compilation. * - You can manually run compatibility tests using `yarn compat` if this feature is disabled. * - You can ignore compatibility failures by adding lines to a ".compatignore" file. * @default false */ readonly compat?: boolean; /** * Name of the ignore file for API compatibility tests. * @default ".compatignore" */ readonly compatIgnore?: string; /** * Emit a compressed version of the assembly. * @default false */ readonly compressAssembly?: boolean; /** * Minimum version of the `constructs` library to depend on. * @default - for CDK 1.x the default is "3.2.27", for CDK 2.x the default is "10.5.1". */ readonly constructsVersion?: string; /** * License copyright owner. * @default - defaults to the value of authorName or "" if `authorName` is undefined. */ readonly copyrightOwner?: string; /** * The copyright years to put in the LICENSE file. * @default - current year */ readonly copyrightPeriod?: string; /** * The name of the main release branch. * @default "main" */ readonly defaultReleaseBranch: string; /** * Automatically delete lockfiles from package managers that are not the active one. * Only triggered when the lockfile for the configured package * manager already exists. * * This is useful when migrating between package managers to avoid conflicts. * @default true */ readonly deleteOrphanedLockFiles?: boolean; /** * Use dependabot to handle dependency upgrades. * Cannot be used in conjunction with `depsUpgrade`. * @default false */ readonly dependabot?: boolean; /** * Options for dependabot. * @default - default options */ readonly dependabotOptions?: github.DependabotOptions; /** * Runtime dependencies of this module. * The recommendation is to only specify the module name here (e.g. * `express`). This will behave similar to `pnpm add` or `npm install` in the * sense that it will add the module as a dependency to your `package.json` * file with the latest version (`^`). You can specify semver requirements in * the same syntax passed to `pnpm add` or `npm i` (e.g. `express@^2`) and * this will be what your `package.json` will eventually include. * @default [] */ readonly deps?: Array; /** * Use tasks and github workflows to handle dependency upgrades. * Cannot be used in conjunction with `dependabot`. * @default - `true` for root projects, `false` for subprojects */ readonly depsUpgrade?: boolean; /** * Options for `UpgradeDependencies`. * @default - default options */ readonly depsUpgradeOptions?: javascript.UpgradeDependenciesOptions; /** * The description is just a string that helps people understand the purpose of the package. * It can be used when searching for packages in a package manager as well. * See https://classic.yarnpkg.com/en/docs/package-json/#toc-description */ readonly description?: string; /** * Add a VSCode development environment (used for GitHub Codespaces). * @default false */ readonly devContainer?: boolean; /** * Build dependencies for this module. * These dependencies will only be * available in your build environment but will not be fetched when this * module is consumed. * * The recommendation is to only specify the module name here (e.g. * `express`). This will behave similar to `pnpm add` or `npm install` in the * sense that it will add the module as a dependency to your `package.json` * file with the latest version (`^`). You can specify semver requirements in * the same syntax passed to `pnpm add` or `npm i` (e.g. `express@^2`) and * this will be what your `package.json` will eventually include. * @default [] */ readonly devDeps?: Array; /** * Configure the `devEngines` field in `package.json`. * The `devEngines.packageManager` field is automatically populated based on * the resolved `packageManager` value. Any fields provided here are merged * with the auto-populated `packageManager` entry. */ readonly devEngines?: javascript.DevEngines; /** * Do not generate a `tsconfig.json` file (used by jsii projects since tsconfig.json is generated by the jsii compiler). * @default false */ readonly disableTsconfig?: boolean; /** * Do not generate a `tsconfig.dev.json` file. * @default false */ readonly disableTsconfigDev?: boolean; /** * Docgen by Typedoc. * @default false */ readonly docgen?: boolean; /** * File path for generated docs. * @default "API.md" */ readonly docgenFilePath?: string; /** * Docs directory. * @default "docs" */ readonly docsDirectory?: string; /** * @deprecated use `publishToNuget` */ readonly dotnet?: cdk.JsiiDotNetTarget; /** * Automatically adds an `cloudfront.experimental.EdgeFunction` for each `.edge-lambda.ts` handler in your source tree. If this is disabled, you can manually add an `awscdk.AutoDiscover` component to your project. * @default true */ readonly edgeLambdaAutoDiscover?: boolean; /** * Whether to enable the auto merge workflow for PRs. * This will enable the auto merge workflow as well as the merge queue * @default - true for private projects, false otherwise */ readonly enablePRAutoMerge?: boolean; /** * Module entrypoint (`main` in `package.json`). * Set to an empty string to not include `main` in your package.json * @default "lib/index.js" */ readonly entrypoint?: string; /** * The .d.ts file that includes the type declarations for this module. * @default - .d.ts file derived from the project's entrypoint (usually lib/index.d.ts) */ readonly entrypointTypes?: string; /** * Setup eslint. * @default - true, unless biome is enabled */ readonly eslint?: boolean; /** * Eslint options. * @default - opinionated default options */ readonly eslintOptions?: javascript.EslintOptions; /** * Accepts a list of glob patterns. * Files matching any of those patterns will be excluded from the TypeScript compiler input. * * By default, jsii will include all *.ts files (except .d.ts files) in the TypeScript compiler input. * This can be problematic for example when the package's build or test procedure generates .ts files * that cannot be compiled with jsii's compiler settings. */ readonly excludeTypescript?: Array; /** * Enable experimental support for the AWS CDK integ-runner. * @default false */ readonly experimentalIntegRunner?: boolean; /** * Options for the GitHub auto merge workflow. * That is the workflow that turns on auto merge on all PRs. * @default - default options */ readonly ghAutoMergeOptions?: github.AutoQueueOptions; /** * Enable GitHub integration. * Enabled by default for root projects. Disabled for non-root projects. * @default true */ readonly github?: boolean; /** * Options for GitHub integration. * @default - see GitHubOptions */ readonly githubOptions?: github.GitHubOptions; /** * Additional entries to .gitignore. */ readonly gitignore?: Array; /** * Configuration options for .gitignore file. */ readonly gitIgnoreOptions?: IgnoreFileOptions; /** * Configuration options for git. */ readonly gitOptions?: GitOptions; /** * Add a Gitpod development environment. * @default false */ readonly gitpod?: boolean; /** * Package's Homepage / Website. */ readonly homepage?: string; /** * Automatically discovers and creates integration tests for each `.integ.ts` file under your test directory. * @default true */ readonly integrationTestAutoDiscover?: boolean; /** * Setup jest unit tests. * @default true */ readonly jest?: boolean; /** * Jest options. * @default - default options */ readonly jestOptions?: javascript.JestOptions; /** * Version requirement of `publib` which is used to publish modules to npm. * @default "latest" */ readonly jsiiReleaseVersion?: string; /** * Version of the jsii compiler to use. * Set to "*" if you want to manually manage the version of jsii in your * project by managing updates to `package.json` on your own. * * NOTE: The jsii compiler releases since 5.0.0 are not semantically versioned * and should remain on the same minor, so we recommend using a `~` dependency * (e.g. `~5.0.0`). * @default "~5.9.0" */ readonly jsiiVersion?: string; /** * Keywords to include in `package.json`. */ readonly keywords?: Array; /** * Automatically adds an `aws_lambda.Function` for each `.lambda.ts` handler in your source tree. If this is disabled, you either need to explicitly call `aws_lambda.Function.autoDiscover()` or define a `new aws_lambda.Function()` for each handler. * @default true */ readonly lambdaAutoDiscover?: boolean; /** * Automatically adds an `awscdk.LambdaExtension` for each `.lambda-extension.ts` entrypoint in your source tree. If this is disabled, you can manually add an `awscdk.AutoDiscover` component to your project. * @default true */ readonly lambdaExtensionAutoDiscover?: boolean; /** * Common options for all AWS Lambda functions. * @default - default options */ readonly lambdaOptions?: awscdk.LambdaFunctionCommonOptions; /** * Typescript artifacts output directory. * @default "lib" */ readonly libdir?: string; /** * License's SPDX identifier. * See https://github.com/projen/projen/tree/main/license-text for a list of supported licenses. * Use the `licensed` option if you want to no license to be specified. * @default "Apache-2.0" */ readonly license?: string; /** * Indicates if a license should be added. * @default true */ readonly licensed?: boolean; /** * Configure logging options such as verbosity. * @default {} */ readonly logging?: LoggerOptions; /** * Major version to release from the default branch. * If this is specified, we bump the latest version of this major version line. * If not specified, we bump the global latest version. * @default - Major version is not enforced. */ readonly majorVersion?: number; /** * The maximum node version supported by this package. Most projects should not use this option. * The value indicates that the package is incompatible with any newer versions of node. * This requirement is enforced via the engines field. * * You will normally not need to set this option. * Consider this option only if your package is known to not function with newer versions of node. * @default - no maximum version is enforced */ readonly maxNodeVersion?: string; /** * Whether mergify should be enabled on this repository or not. * @default true * @deprecated use `githubOptions.mergify` instead */ readonly mergify?: boolean; /** * Options for mergify. * @default - default options * @deprecated use `githubOptions.mergifyOptions` instead */ readonly mergifyOptions?: github.MergifyOptions; /** * Minimal Major version to release. * This can be useful to set to 1, as breaking changes before the 1.x major * release are not incrementing the major version number. * * Can not be set together with `majorVersion`. * @default - No minimum version is being enforced */ readonly minMajorVersion?: number; /** * Minimum Node.js version to require via package.json `engines` (inclusive). * * Only set this if your package will not work properly on specific (older?) * Node versions. * * @default - no "engines" specified */ readonly minNodeVersion?: string; /** * Automatically update files modified during builds to pull-request branches. * This means * that any files synthesized by projen or e.g. test snapshots will always be up-to-date * before a PR is merged. * * Implies that PR builds do not have anti-tamper checks. * @default true * @deprecated - Use `buildWorkflowOptions.mutableBuild` */ readonly mutableBuild?: boolean; /** * This is the name of your project. * @default $BASEDIR */ readonly name: string; /** * A shell command to control the next version to release. * If present, this shell command will be run before the bump is executed, and * it determines what version to release. It will be executed in the following * environment: * * - Working directory: the project directory. * - `$VERSION`: the current version. Looks like `1.2.3`. * - `$LATEST_TAG`: the most recent tag. Looks like `prefix-v1.2.3`, or may be unset. * - `$SUGGESTED_BUMP`: the suggested bump action based on commits. One of `major|minor|patch|none`. * * The command should print one of the following to `stdout`: * * - Nothing: the next version number will be determined based on commit history. * - `x.y.z`: the next version number will be `x.y.z`. * - `major|minor|patch`: the next version number will be the current version number * with the indicated component bumped. * * This setting cannot be specified together with `minMajorVersion`; the invoked * script can be used to achieve the effects of `minMajorVersion`. * @default - The next version will be determined based on the commit history and project settings. */ readonly nextVersionCommand?: string; /** * Access level of the npm package. * @default - for scoped packages (e.g. `foo@bar`), the default is `NpmAccess.RESTRICTED`, for non-scoped packages, the default is `NpmAccess.PUBLIC`. */ readonly npmAccess?: javascript.NpmAccess; /** * The npmDistTag to use when publishing from the default branch. * To set the npm dist-tag for release branches, set the `npmDistTag` property * for each branch. * @default "latest" */ readonly npmDistTag?: string; /** * Additional entries to .npmignore. * @deprecated - use `project.addPackageIgnore` */ readonly npmignore?: Array; /** * Defines an .npmignore file. Normally this is only needed for libraries that are packaged as tarballs. * @default true */ readonly npmignoreEnabled?: boolean; /** * Configuration options for .npmignore file. */ readonly npmIgnoreOptions?: IgnoreFileOptions; /** * Should provenance statements be generated when the package is published. * A supported package manager is required to publish a package with npm provenance statements and * you will need to use a supported CI/CD provider. * * Note that the projen `Release` and `Publisher` components are using `publib` to publish packages, * which is using npm internally and supports provenance statements independently of the package manager used. * @default - true for public packages, false otherwise */ readonly npmProvenance?: boolean; /** * The host name of the npm registry to publish to. * Cannot be set together with `npmRegistryUrl`. * @deprecated use `npmRegistryUrl` instead */ readonly npmRegistry?: string; /** * The base URL of the npm package registry. * Must be a URL (e.g. start with "https://" or "http://") * @default "https://registry.npmjs.org" */ readonly npmRegistryUrl?: string; /** * GitHub secret which contains the NPM token to use when publishing packages. * @default "NPM_TOKEN" */ readonly npmTokenSecret?: string; /** * Use trusted publishing for publishing to npmjs.com Needs to be pre-configured on npm.js to work. * @default - false */ readonly npmTrustedPublishing?: boolean; /** * The root directory of the project. * Relative to this directory, all files are synthesized. * * If this project has a parent, this directory is relative to the parent * directory and it cannot be the same as the parent or any of it's other * subprojects. * @default "." */ readonly outdir?: string; /** * Defines a `package` task that will produce an npm tarball under the artifacts directory (e.g. `dist`). * @default true */ readonly package?: boolean; /** * The Node Package Manager used to execute scripts. * @default - Detected from the calling process or `YARN_CLASSIC` if detection fails. */ readonly packageManager?: javascript.NodePackageManager; /** * The "name" in package.json. * @default - defaults to project name */ readonly packageName?: string; /** * The parent project, if this project is part of a bigger project. */ readonly parent?: Project; /** * Options for `peerDeps`. */ readonly peerDependencyOptions?: javascript.PeerDependencyOptions; /** * Peer dependencies for this module. * Dependencies listed here are required to * be installed (and satisfied) by the _consumer_ of this library. Using peer * dependencies allows you to ensure that only a single module of a certain * library exists in the `node_modules` tree of your consumers. * * Note that prior to npm@7, peer dependencies are _not_ automatically * installed, which means that adding peer dependencies to a library will be a * breaking change for your customers. * * Unless `peerDependencyOptions.pinnedDevDependency` is disabled (it is * enabled by default), projen will automatically add a dev dependency with a * pinned version for each peer dependency. This will ensure that you build & * test your module against the lowest peer version required. * @default [] */ readonly peerDeps?: Array; /** * The version of PNPM to use if using PNPM as a package manager. * @default "10.33.0" */ readonly pnpmVersion?: string; /** * Steps to execute after build as part of the release workflow. * @default [] */ readonly postBuildSteps?: Array; /** * Bump versions from the default branch as pre-releases (e.g. "beta", "alpha", "pre"). * @default - normal semantic versions */ readonly prerelease?: string; /** * Setup prettier. * @default false */ readonly prettier?: boolean; /** * Prettier options. * @default - default options */ readonly prettierOptions?: javascript.PrettierOptions; /** * Whether or not this package is private. * Setting this variable to true means that your project is created with sane defaults for private repositories. * @default true */ readonly private?: boolean; /** * Generate a project tree file (`.projen/tree.json`) that shows all components and their relationships. Useful for understanding your project structure and debugging. * @default false */ readonly projectTree?: boolean; /** * Which type of project this is (library/app). * @default ProjectType.UNKNOWN * @deprecated no longer supported at the base project level */ readonly projectType?: ProjectType; /** * The shell command to use in order to run the projen CLI. * Can be used to customize in special environments. * @default "npx projen" */ readonly projenCommand?: string; /** * Choose a method of providing GitHub API access for projen workflows. * @default - use a personal access token named PROJEN_GITHUB_TOKEN */ readonly projenCredentials?: github.GithubCredentials; /** * Indicates of "projen" should be installed as a devDependency. * @default - true if not a subproject */ readonly projenDevDependency?: boolean; /** * Generate (once) .projenrc.js (in JavaScript). Set to `false` in order to disable .projenrc.js generation. * @default - true if projenrcJson is false */ readonly projenrcJs?: boolean; /** * Generate (once) .projenrc.json (in JSON). Set to `false` in order to disable .projenrc.json generation. * @default false */ readonly projenrcJson?: boolean; /** * Options for .projenrc.json. * @default - default options */ readonly projenrcJsonOptions?: ProjenrcJsonOptions; /** * Options for .projenrc.js. * @default - default options */ readonly projenrcJsOptions?: javascript.ProjenrcOptions; /** * Use TypeScript for your projenrc file (`.projenrc.ts`). * @default false */ readonly projenrcTs?: boolean; /** * Options for .projenrc.ts. */ readonly projenrcTsOptions?: typescript.ProjenrcOptions; /** * The name of a secret which includes a GitHub Personal Access Token to be used by projen workflows. * This token needs to have the `repo`, `workflows` * and `packages` scope. * @default "PROJEN_GITHUB_TOKEN" * @deprecated use `projenCredentials` */ readonly projenTokenSecret?: string; /** * Version of projen to install. * @default - Defaults to the latest version. */ readonly projenVersion?: string; /** * Instead of actually publishing to package managers, just print the publishing command. * @default false */ readonly publishDryRun?: boolean; /** * Define publishing tasks that can be executed manually as well as workflows. * Normally, publishing only happens within automated workflows. Enable this * in order to create a publishing task for each publishing activity. * @default false */ readonly publishTasks?: boolean; /** * Publish Go bindings to a git repository. * @default - no publishing */ readonly publishToGo?: cdk.JsiiGoTarget; /** * Publish to maven. * @default - no publishing */ readonly publishToMaven?: cdk.JsiiJavaTarget; /** * Publish to NuGet. * @default - no publishing */ readonly publishToNuget?: cdk.JsiiDotNetTarget; /** * Publish to pypi. * @default - no publishing */ readonly publishToPypi?: cdk.JsiiPythonTarget; /** * Include a GitHub pull request template. * @default true */ readonly pullRequestTemplate?: boolean; /** * The contents of the pull request template. * @default - default content */ readonly pullRequestTemplateContents?: Array; /** * @deprecated use `publishToPyPi` */ readonly python?: cdk.JsiiPythonTarget; /** * The README setup. * @default - { filename: 'README.md', contents: '# replace this' } */ readonly readme?: SampleReadmeProps; /** * Find commits that should be considered releasable Used to decide if a release is required. * @default ReleasableCommits.everyCommit() */ readonly releasableCommits?: ReleasableCommits; /** * Add release management to this project. * @default - true (false for subprojects) */ readonly release?: boolean; /** * Defines additional release branches. * A workflow will be created for each * release branch which will publish releases from commits in this branch. * Each release branch _must_ be assigned a major version number which is used * to enforce that versions published from that branch always use that major * version. If multiple branches are used, the `majorVersion` field must also * be provided for the default branch. * @default - no additional branches are used for release. you can use `addBranch()` to add additional branches. */ readonly releaseBranches?: Record; /** * The GitHub Actions environment used for the release. * This can be used to add an explicit approval step to the release * or limit who can initiate a release through environment protection rules. * * When multiple artifacts are released, the environment can be overwritten * on a per artifact basis. * @default - no environment used, unless set at the artifact level */ readonly releaseEnvironment?: string; /** * Automatically release new versions every commit to one of branches in `releaseBranches`. * @default true * @deprecated Use `releaseTrigger: ReleaseTrigger.continuous()` instead */ readonly releaseEveryCommit?: boolean; /** * Create a github issue on every failed publishing task. * @default false */ readonly releaseFailureIssue?: boolean; /** * The label to apply to issues indicating publish failures. * Only applies if `releaseFailureIssue` is true. * @default "failed-release" */ readonly releaseFailureIssueLabel?: string; /** * CRON schedule to trigger new releases. * @default - no scheduled releases * @deprecated Use `releaseTrigger: ReleaseTrigger.scheduled()` instead */ readonly releaseSchedule?: string; /** * Automatically add the given prefix to release tags. Useful if you are releasing on multiple branches with overlapping version numbers. * Note: this prefix is used to detect the latest tagged version * when bumping, so if you change this on a project with an existing version * history, you may need to manually tag your latest release * with the new prefix. * @default "v" */ readonly releaseTagPrefix?: string; /** * Automatically release to npm when new versions are introduced. * @default false */ readonly releaseToNpm?: boolean; /** * The release trigger to use. * @default - Continuous releases (`ReleaseTrigger.continuous()`) */ readonly releaseTrigger?: release.ReleaseTrigger; /** * DEPRECATED: renamed to `release`. * @default - true if not a subproject * @deprecated see `release`. */ readonly releaseWorkflow?: boolean; /** * Build environment variables for release workflows. * @default {} */ readonly releaseWorkflowEnv?: Record; /** * The name of the default release workflow. * @default "release" */ readonly releaseWorkflowName?: string; /** * A set of workflow steps to execute in order to setup the workflow container. */ readonly releaseWorkflowSetupSteps?: Array; /** * Use renovatebot to handle dependency upgrades. * @default false */ readonly renovatebot?: boolean; /** * Options for renovatebot. * @default - default options */ readonly renovatebotOptions?: RenovatebotOptions; /** * @default - generated from org tenancy and package name */ readonly repository?: string; /** * If the package.json for your package is not in the root directory (for example if it is part of a monorepo), you can specify the directory in which it lives. */ readonly repositoryDirectory?: string; /** * @default - generated from org tenancy and package name * @deprecated use `repository` */ readonly repositoryUrl?: string; /** * @default "." */ readonly rootdir?: string; /** * Options for rosetta:extract task */ readonly rosettaOptions?: RosettaOptions; /** * Generate one-time sample in `src/` and `test/` if there are no files there. * @default true */ readonly sampleCode?: boolean; /** * Options for privately hosted scoped packages. * @default - fetch all scoped packages from the public npm registry */ readonly scopedPackagesOptions?: Array; /** * npm scripts to include. * If a script has the same name as a standard script, * the standard script will be overwritten. * Also adds the script as a task. * @default {} * @deprecated use `project.addTask()` or `package.setScript()` */ readonly scripts?: Record; /** * Set a minimal node version via the engines field * Set this to `false` if a package did not enforce this previously and we don't want to change this for now. * @default true */ readonly setNodeEngineVersion?: boolean; /** * Automatically adds an `awscdk.SingletonFunction` for each `.singleton-lambda.ts` handler in your source tree. If this is disabled, you can manually add an `awscdk.AutoDiscover` component to your project. * @default true */ readonly singletonLambdaAutoDiscover?: boolean; /** * Typescript sources directory. * @default "src" */ readonly srcdir?: string; /** * Package's Stability. */ readonly stability?: string; /** * Auto-close of stale issues and pull request. * See `staleOptions` for options. * @default false */ readonly stale?: boolean; /** * Auto-close stale issues and pull requests. * To disable set `stale` to `false`. * @default - see defaults in `StaleOptions` */ readonly staleOptions?: github.StaleOptions; /** * The organization this project is part of. * @default - Auto detected from package name */ readonly tenancy?: OrgTenancy; /** * Jest tests directory. Tests files should be named `xxx.test.ts`. * If this directory is under `srcdir` (e.g. `src/test`, `src/__tests__`), * then tests are going to be compiled into `lib/` and executed as javascript. * If the test directory is outside of `src`, then we configure jest to * compile the code in-memory. * @default "test" */ readonly testdir?: string; /** * Custom TSConfig. * @default - default options */ readonly tsconfig?: javascript.TypescriptConfigOptions; /** * Custom tsconfig options for the development tsconfig.json file (used for testing). * @default - use the production tsconfig options */ readonly tsconfigDev?: javascript.TypescriptConfigOptions; /** * The name of the development tsconfig.json file. * @default "tsconfig.dev.json" */ readonly tsconfigDevFile?: string; /** * Options for ts-jest. */ readonly tsJestOptions?: typescript.TsJestOptions; /** * TypeScript version to use. * NOTE: Typescript is not semantically versioned and should remain on the * same minor, so we recommend using a `~` dependency (e.g. `~1.2.3`). * @default "latest" */ readonly typescriptVersion?: string; /** * Whether to enable the separate workflow to upgrade the cdklabs-projen-project-types dependencies. * @default true */ readonly upgradeCdklabsProjenProjectTypes?: boolean; /** * Whether to have a separate workflow to upgrade runtime deps and mark this PR as fix. * @default true */ readonly upgradeRuntimeDepsAsFix?: boolean; /** * Custom configuration used when creating changelog with commit-and-tag-version package. * Given values either append to default configuration or overwrite values in it. * @default - standard configuration applicable for GitHub repositories */ readonly versionrcOptions?: Record; /** * Enable VSCode integration. * Enabled by default for root projects. Disabled for non-root projects. * @default true */ readonly vscode?: boolean; /** * Workflow steps to use in order to bootstrap this repo. * @default "yarn install --frozen-lockfile && yarn projen" */ readonly workflowBootstrapSteps?: Array; /** * Container image to use for GitHub workflows. * @default - default image */ readonly workflowContainerImage?: string; /** * The git identity to use in workflows. * @default - default GitHub Actions user */ readonly workflowGitIdentity?: github.GitIdentity; /** * The node version to use in GitHub workflows. * @default 'lts/*' */ readonly workflowNodeVersion?: string; /** * Enable Node.js package cache in GitHub workflows. * @default false */ readonly workflowPackageCache?: boolean; /** * Github Runner selection labels. * @default ["ubuntu-latest"] */ readonly workflowRunsOn?: Array; /** * Github Runner Group selection options. */ readonly workflowRunsOnGroup?: GroupRunnerOptions; /** * Options for Yarn Berry. * @default - Yarn Berry v4 with all default options */ readonly yarnBerryOptions?: javascript.YarnBerryOptions; }