API Reference
Submodules
The following submodules are available:
- awscdk
- build
- cdk
- cdk8s
- cdktf
- circleci
- github
- github.workflows
- gitlab
- java
- javascript
- javascript.biome_config
- python
- release
- typescript
- vscode
- web
Constructs
AiInstructions
Generates instruction files for AI coding assistants with projen-specific guidance.
This component creates configuration files that help AI tools like GitHub Copilot, Cursor IDE, Claude Code, and Amazon Q understand that the project is managed by projen and should follow projen conventions.
Example
const project = new TypeScriptProject({
name: "my-project",
defaultReleaseBranch: "main",
});
// Basic usage - generates files for all supported AI agents
new AiInstructions(project);
// Custom usage - specify which agents and add custom instructions
new AiInstructions(project, {
agents: [AiAgent.GITHUB_COPILOT, AiAgent.CURSOR],
agentSpecificInstructions: {
[AiAgent.GITHUB_COPILOT]: ["Always use descriptive commit messages."],
},
});
// Add more instructions after instantiation
const ai = new AiInstructions(project);
ai.addInstructions("Use functional programming patterns.");
ai.addInstructions("Always write comprehensive tests.");
Initializers
import { AiInstructions } from 'projen'
new AiInstructions(project: Project, options?: AiInstructionsOptions)
| Name | Type | Description |
|---|---|---|
| | No description. |
| | No description. |
projectRequired
- Type: Project
optionsOptional
- Type: AiInstructionsOptions
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Synthesizes files to the project output directory. |
| Add instructions for a specific AI agent. |
| Adds instructions that will be included for all selected AI agents. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Synthesizes files to the project output directory.
addAgentSpecificInstructions
public addAgentSpecificInstructions(agent: AiAgent, instructions: ...string[]): void
Add instructions for a specific AI agent.
This can also be used to add instructions for an AI agent that was previously not enabled.
Example
aiInstructions.addAgentSpecificInstructions(AiAgent.GITHUB_COPILOT, "Use descriptive commit messages.");
agentRequired
- Type: AiAgent
The AI agent to add instructions for.
instructionsRequired
- Type: ...string[]
The instruction(s) to add.
addInstructions
public addInstructions(instructions: ...string[]): void
Adds instructions that will be included for all selected AI agents.
Example
aiInstructions.addInstructions("Always use TypeScript strict mode.");
aiInstructions.addInstructions("Prefer functional programming.", "Avoid mutations.");
instructionsRequired
- Type: ...string[]
The instructions to add.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
| Returns development best practices instructions for AI agents. |
| Returns projen-specific instructions for AI agents. |
isConstruct
import { AiInstructions } from 'projen'
AiInstructions.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { AiInstructions } from 'projen'
AiInstructions.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
bestPractices
import { AiInstructions } from 'projen'
AiInstructions.bestPractices(project: Project)
Returns development best practices instructions for AI agents.
projectRequired
- Type: Project
projen
import { AiInstructions } from 'projen'
AiInstructions.projen(project: Project)
Returns projen-specific instructions for AI agents.
projectRequired
- Type: Project
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
AiInstructionsFile
Initializers
import { AiInstructionsFile } from 'projen'
new AiInstructionsFile(scope: IConstruct, filePath: string, options?: FileBaseOptions)
| Name | Type | Description |
|---|---|---|
| constructs.IConstruct | No description. |
| string | No description. |
| | No description. |
scopeRequired
- Type: constructs.IConstruct
filePathRequired
- Type: string
optionsOptional
- Type: FileBaseOptions
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Writes the file to the project's output directory. |
| Adds instructions to the instruction file. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Writes the file to the project's output directory.
addInstructions
public addInstructions(instructions: ...string[]): void
Adds instructions to the instruction file.
instructionsRequired
- Type: ...string[]
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { AiInstructionsFile } from 'projen'
AiInstructionsFile.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { AiInstructionsFile } from 'projen'
AiInstructionsFile.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| string | The absolute path of this file. |
| string | The file path, relative to the project's outdir. |
| boolean | Indicates if the file has been changed during synthesis. |
| string | The projen marker, used to identify files as projen-generated. |
| boolean | Indicates if the file should be marked as executable. |
| boolean | Indicates if the file should be read-only or read-write. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
absolutePathRequired
public readonly absolutePath: string;
- Type: string
The absolute path of this file.
pathRequired
public readonly path: string;
- Type: string
The file path, relative to the project's outdir.
changedOptional
public readonly changed: boolean;
- Type: boolean
Indicates if the file has been changed during synthesis.
This property is
only available in postSynthesize() hooks. If this is undefined, the
file has not been synthesized yet.
markerOptional
public readonly marker: string;
- Type: string
The projen marker, used to identify files as projen-generated.
Value is undefined if the project is being ejected.
executableRequired
public readonly executable: boolean;
- Type: boolean
Indicates if the file should be marked as executable.
readonlyRequired
public readonly readonly: boolean;
- Type: boolean
Indicates if the file should be read-only or read-write.
Component
Represents a project component.
Initializers
import { Component } from 'projen'
new Component(scope: IConstruct, id?: string)
| Name | Type | Description |
|---|---|---|
| constructs.IConstruct | No description. |
| string | No description. |
scopeRequired
- Type: constructs.IConstruct
idOptional
- Type: string
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Synthesizes files to the project output directory. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Synthesizes files to the project output directory.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { Component } from 'projen'
Component.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { Component } from 'projen'
Component.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
Dependencies
The Dependencies component is responsible to track the list of dependencies a project has, and then used by project types as the model for rendering project-specific dependency manifests such as the dependencies section package.json files.
To add a dependency you can use a project-type specific API such as
nodeProject.addDeps() or use the generic API of project.deps:
Initializers
import { Dependencies } from 'projen'
new Dependencies(project: Project)
| Name | Type | Description |
|---|---|---|
| | The parent project. |
projectRequired
- Type: Project
The parent project.
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Synthesizes files to the project output directory. |
| Adds a dependency to this project. |
| Returns a dependency by name. |
| Checks if an existing dependency satisfies a dependency requirement. |
| Removes a dependency. |
| Returns a dependency by name. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Synthesizes files to the project output directory.
addDependency
public addDependency(spec: string, type: DependencyType, metadata?: {[ key: string ]: any}): Dependency
Adds a dependency to this project.
specRequired
- Type: string
The dependency spec in the format MODULE[@VERSION] where MODULE is the package-manager-specific module name and VERSION is an optional semantic version requirement (e.g. ^3.4.0).
typeRequired
- Type: DependencyType
The type of the dependency.
metadataOptional
- Type: {[ key: string ]: any}
getDependency
public getDependency(name: string, type?: DependencyType): Dependency
Returns a dependency by name.
Fails if there is no dependency defined by that name or if type is not
provided and there is more then one dependency type for this dependency.
nameRequired
- Type: string
The name of the dependency.
typeOptional
- Type: DependencyType
The dependency type.
If this dependency is defined only for a single type, this argument can be omitted.
isDependencySatisfied
public isDependencySatisfied(name: string, type: DependencyType, expectedRange: string): boolean
Checks if an existing dependency satisfies a dependency requirement.
nameRequired
- Type: string
The name of the dependency to check (without the version).
typeRequired
- Type: DependencyType
The dependency type.
expectedRangeRequired
- Type: string
The version constraint to check (e.g. ^3.4.0). The constraint of the dependency must be a subset of the expected range to satisfy the requirements.
removeDependency
public removeDependency(name: string, type?: DependencyType): void
Removes a dependency.
nameRequired
- Type: string
The name of the module to remove (without the version).
typeOptional
- Type: DependencyType
The dependency type.
This is only required if there the dependency is defined for multiple types.
tryGetDependency
public tryGetDependency(name: string, type?: DependencyType): Dependency
Returns a dependency by name.
Returns undefined if there is no dependency defined by that name or if
type is not provided and there is more then one dependency type for this
dependency.
nameRequired
- Type: string
The name of the dependency.
typeOptional
- Type: DependencyType
The dependency type.
If this dependency is defined only for a single type, this argument can be omitted.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
| Returns the coordinates of a dependency spec. |
isConstruct
import { Dependencies } from 'projen'
Dependencies.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { Dependencies } from 'projen'
Dependencies.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
parseDependency
import { Dependencies } from 'projen'
Dependencies.parseDependency(spec: string)
Returns the coordinates of a dependency spec.
Given foo@^3.4.0 returns { name: "foo", version: "^3.4.0" }.
Given bar@npm:@bar/legacy returns { name: "bar", version: "npm:@bar/legacy" }.
specRequired
- Type: string
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| | A copy of all dependencies recorded for this project. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
allRequired
public readonly all: Dependency[];
- Type: Dependency[]
A copy of all dependencies recorded for this project.
The list is sorted by type->name->version
Constants
| Name | Type | Description |
|---|---|---|
| string | The project-relative path of the deps manifest file. |
MANIFEST_FILERequired
public readonly MANIFEST_FILE: string;
- Type: string
The project-relative path of the deps manifest file.
DockerCompose
Create a docker-compose YAML file.
Initializers
import { DockerCompose } from 'projen'
new DockerCompose(project: Project, props?: DockerComposeProps)
| Name | Type | Description |
|---|---|---|
| | No description. |
| | No description. |
projectRequired
- Type: Project
propsOptional
- Type: DockerComposeProps
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Synthesizes files to the project output directory. |
| Add a service to the docker-compose file. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Synthesizes files to the project output directory.
addService
public addService(serviceName: string, description: DockerComposeServiceDescription): DockerComposeService
Add a service to the docker-compose file.
serviceNameRequired
- Type: string
name of the service.
descriptionRequired
a service description.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
| Create a bind volume that binds a host path to the target path in the container. |
| Create a named volume and mount it to the target path. |
| Create a named network and mount it to the target path. |
| Create a port mapping. |
| Depends on a service name. |
isConstruct
import { DockerCompose } from 'projen'
DockerCompose.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { DockerCompose } from 'projen'
DockerCompose.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
bindVolume
import { DockerCompose } from 'projen'
DockerCompose.bindVolume(sourcePath: string, targetPath: string)
Create a bind volume that binds a host path to the target path in the container.
sourcePathRequired
- Type: string
Host path name.
targetPathRequired
- Type: string
Target path name.
namedVolume
import { DockerCompose } from 'projen'
DockerCompose.namedVolume(volumeName: string, targetPath: string, options?: DockerComposeVolumeConfig)
Create a named volume and mount it to the target path.
If you use this named volume in several services, the volume will be shared. In this case, the volume configuration of the first-provided options are used.
volumeNameRequired
- Type: string
Name of the volume.
targetPathRequired
- Type: string
Target path.
optionsOptional
volume configuration (default: docker compose defaults).
network
import { DockerCompose } from 'projen'
DockerCompose.network(networkName: string, options?: DockerComposeNetworkConfig)
Create a named network and mount it to the target path.
If you use this named network in several services, the network will be shared. In this case, the network configuration of the first-provided options are used.
networkNameRequired
- Type: string
Name of the network.
optionsOptional
network configuration.
portMapping
import { DockerCompose } from 'projen'
DockerCompose.portMapping(publishedPort: number, targetPort: number, options?: DockerComposePortMappingOptions)
Create a port mapping.
publishedPortRequired
- Type: number
Published port number.
targetPortRequired
- Type: number
Container's port number.
optionsOptional
Port mapping options.
serviceName
import { DockerCompose } from 'projen'
DockerCompose.serviceName(serviceName: string)
Depends on a service name.
serviceNameRequired
- Type: string
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| | The Docker Compose file. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
fileRequired
public readonly file: YamlFile;
- Type: YamlFile
The Docker Compose file.
FileBase
Initializers
import { FileBase } from 'projen'
new FileBase(scope: IConstruct, filePath: string, options?: FileBaseOptions)
| Name | Type | Description |
|---|---|---|
| constructs.IConstruct | No description. |
| string | No description. |
| | No description. |
scopeRequired
- Type: constructs.IConstruct
filePathRequired
- Type: string
optionsOptional
- Type: FileBaseOptions
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Writes the file to the project's output directory. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Writes the file to the project's output directory.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { FileBase } from 'projen'
FileBase.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { FileBase } from 'projen'
FileBase.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| string | The absolute path of this file. |
| string | The file path, relative to the project's outdir. |
| boolean | Indicates if the file has been changed during synthesis. |
| string | The projen marker, used to identify files as projen-generated. |
| boolean | Indicates if the file should be marked as executable. |
| boolean | Indicates if the file should be read-only or read-write. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
absolutePathRequired
public readonly absolutePath: string;
- Type: string
The absolute path of this file.
pathRequired
public readonly path: string;
- Type: string
The file path, relative to the project's outdir.
changedOptional
public readonly changed: boolean;
- Type: boolean
Indicates if the file has been changed during synthesis.
This property is
only available in postSynthesize() hooks. If this is undefined, the
file has not been synthesized yet.
markerOptional
public readonly marker: string;
- Type: string
The projen marker, used to identify files as projen-generated.
Value is undefined if the project is being ejected.
executableRequired
public readonly executable: boolean;
- Type: boolean
Indicates if the file should be marked as executable.
readonlyRequired
public readonly readonly: boolean;
- Type: boolean
Indicates if the file should be read-only or read-write.
GitAttributesFile
Assign attributes to file names in a git repository.
Initializers
import { GitAttributesFile } from 'projen'
new GitAttributesFile(scope: IConstruct, options?: GitAttributesFileOptions)
| Name | Type | Description |
|---|---|---|
| constructs.IConstruct | No description. |
| | No description. |
scopeRequired
- Type: constructs.IConstruct
optionsOptional
- Type: GitAttributesFileOptions
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Writes the file to the project's output directory. |
| Maps a set of attributes to a set of files. |
| Add attributes necessary to mark these files as stored in LFS. |
| Removes attributes from a set of files. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Writes the file to the project's output directory.
addAttributes
public addAttributes(glob: string, attributes: ...string[]): void
Maps a set of attributes to a set of files.
globRequired
- Type: string
Glob pattern to match files in the repo.
attributesRequired
- Type: ...string[]
Attributes to assign to these files.
addLfsPattern
public addLfsPattern(glob: string): void
Add attributes necessary to mark these files as stored in LFS.
globRequired
- Type: string
removeAttributes
public removeAttributes(glob: string, attributes: ...string[]): void
Removes attributes from a set of files.
If no attributes are provided, the glob pattern will be removed completely.
globRequired
- Type: string
Glob pattern to modify.
attributesRequired
- Type: ...string[]
Attributes to remove from matched files.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { GitAttributesFile } from 'projen'
GitAttributesFile.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { GitAttributesFile } from 'projen'
GitAttributesFile.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| string | The absolute path of this file. |
| string | The file path, relative to the project's outdir. |
| boolean | Indicates if the file has been changed during synthesis. |
| string | The projen marker, used to identify files as projen-generated. |
| boolean | Indicates if the file should be marked as executable. |
| boolean | Indicates if the file should be read-only or read-write. |
| | The default end of line character for text files. |
| boolean | Whether the current gitattributes file has any LFS patterns. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
absolutePathRequired
public readonly absolutePath: string;
- Type: string
The absolute path of this file.
pathRequired
public readonly path: string;
- Type: string
The file path, relative to the project's outdir.
changedOptional
public readonly changed: boolean;
- Type: boolean
Indicates if the file has been changed during synthesis.
This property is
only available in postSynthesize() hooks. If this is undefined, the
file has not been synthesized yet.
markerOptional
public readonly marker: string;
- Type: string
The projen marker, used to identify files as projen-generated.
Value is undefined if the project is being ejected.
executableRequired
public readonly executable: boolean;
- Type: boolean
Indicates if the file should be marked as executable.
readonlyRequired
public readonly readonly: boolean;
- Type: boolean
Indicates if the file should be read-only or read-write.
endOfLineRequired
public readonly endOfLine: EndOfLine;
- Type: EndOfLine
The default end of line character for text files.
hasLfsPatternsRequired
public readonly hasLfsPatterns: boolean;
- Type: boolean
Whether the current gitattributes file has any LFS patterns.
Gitpod
- Implements: IDevEnvironment
The Gitpod component which emits .gitpod.yml.
Initializers
import { Gitpod } from 'projen'
new Gitpod(project: Project, options?: GitpodOptions)
| Name | Type | Description |
|---|---|---|
| | No description. |
| | No description. |
projectRequired
- Type: Project
optionsOptional
- Type: GitpodOptions
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Synthesizes files to the project output directory. |
| Add a task with more granular options. |
| Add a custom Docker image or Dockerfile for the container. |
| Add ports that should be exposed (forwarded) from the container. |
| Add a prebuilds configuration for the Gitpod App. |
| Add tasks to run when gitpod starts. |
| Add a list of VSCode extensions that should be automatically installed in the container. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Synthesizes files to the project output directory.
addCustomTask
public addCustomTask(options: GitpodTask): void
Add a task with more granular options.
By default, all tasks will be run in parallel. To run tasks in sequence,
create a new Task and set the other tasks as subtasks.
optionsRequired
- Type: GitpodTask
The task parameters.
addDockerImage
public addDockerImage(image: DevEnvironmentDockerImage): void
Add a custom Docker image or Dockerfile for the container.
imageRequired
The Docker image.
addPorts
public addPorts(ports: ...string[]): void
Add ports that should be exposed (forwarded) from the container.
portsRequired
- Type: ...string[]
The new ports.
addPrebuilds
public addPrebuilds(config: GitpodPrebuilds): void
Add a prebuilds configuration for the Gitpod App.
configRequired
- Type: GitpodPrebuilds
The configuration.
addTasks
public addTasks(tasks: ...Task[]): void
Add tasks to run when gitpod starts.
By default, all tasks will be run in parallel. To run tasks in sequence,
create a new Task and specify the other tasks as subtasks.
tasksRequired
- Type: ...Task[]
The new tasks.
addVscodeExtensions
public addVscodeExtensions(extensions: ...string[]): void
Add a list of VSCode extensions that should be automatically installed in the container.
These must be in the format defined in the Open VSX registry.
Example
'scala-lang.scala@0.3.9:O5XmjwY5Gz+0oDZAmqneJw=='
extensionsRequired
- Type: ...string[]
The extension IDs.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { Gitpod } from 'projen'
Gitpod.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { Gitpod } from 'projen'
Gitpod.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| any | Direct access to the gitpod configuration (escape hatch). |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
configRequired
public readonly config: any;
- Type: any
Direct access to the gitpod configuration (escape hatch).
IgnoreFile
Initializers
import { IgnoreFile } from 'projen'
new IgnoreFile(project: Project, filePath: string, options?: IgnoreFileOptions)
| Name | Type | Description |
|---|---|---|
| | The project to tie this file to. |
| string | - the relative path in the project to put the file. |
| | No description. |
projectRequired
- Type: Project
The project to tie this file to.
filePathRequired
- Type: string
the relative path in the project to put the file.
optionsOptional
- Type: IgnoreFileOptions
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Writes the file to the project's output directory. |
| Add ignore patterns. |
| Ignore the files that match these patterns. |
| Always include the specified file patterns. |
| Removes patterns previously added from the ignore file. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Writes the file to the project's output directory.
addPatterns
public addPatterns(patterns: ...string[]): void
Add ignore patterns.
Files that match this pattern will be ignored. If the
pattern starts with a negation mark !, files that match will not be
ignored.
Comment lines (start with #) and blank lines ("") are filtered by default
but can be included using options specified when instantiating the component.
patternsRequired
- Type: ...string[]
Ignore patterns.
exclude
public exclude(patterns: ...string[]): void
Ignore the files that match these patterns.
patternsRequired
- Type: ...string[]
The patterns to match.
include
public include(patterns: ...string[]): void
Always include the specified file patterns.
patternsRequired
- Type: ...string[]
Patterns to include in git commits.
removePatterns
public removePatterns(patterns: ...string[]): void
Removes patterns previously added from the ignore file.
If addPattern() is called after this, the pattern will be added again.
patternsRequired
- Type: ...string[]
patters to remove.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { IgnoreFile } from 'projen'
IgnoreFile.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { IgnoreFile } from 'projen'
IgnoreFile.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| string | The absolute path of this file. |
| string | The file path, relative to the project's outdir. |
| boolean | Indicates if the file has been changed during synthesis. |
| string | The projen marker, used to identify files as projen-generated. |
| boolean | Indicates if the file should be marked as executable. |
| boolean | Indicates if the file should be read-only or read-write. |
| boolean | No description. |
| boolean | No description. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
absolutePathRequired
public readonly absolutePath: string;
- Type: string
The absolute path of this file.
pathRequired
public readonly path: string;
- Type: string
The file path, relative to the project's outdir.
changedOptional
public readonly changed: boolean;
- Type: boolean
Indicates if the file has been changed during synthesis.
This property is
only available in postSynthesize() hooks. If this is undefined, the
file has not been synthesized yet.
markerOptional
public readonly marker: string;
- Type: string
The projen marker, used to identify files as projen-generated.
Value is undefined if the project is being ejected.
executableRequired
public readonly executable: boolean;
- Type: boolean
Indicates if the file should be marked as executable.
readonlyRequired
public readonly readonly: boolean;
- Type: boolean
Indicates if the file should be read-only or read-write.
filterCommentLinesRequired
public readonly filterCommentLines: boolean;
- Type: boolean
filterEmptyLinesRequired
public readonly filterEmptyLines: boolean;
- Type: boolean
IniFile
Represents an INI file.
Initializers
import { IniFile } from 'projen'
new IniFile(project: Project, filePath: string, options: IniFileOptions)
| Name | Type | Description |
|---|---|---|
| | No description. |
| string | No description. |
| | No description. |
projectRequired
- Type: Project
filePathRequired
- Type: string
optionsRequired
- Type: IniFileOptions
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Writes the file to the project's output directory. |
| Syntactic sugar for addOverride(path, undefined). |
| Adds an override to the synthesized object file. |
| Adds to an array in the synthesized object file. |
| Applies an RFC 6902 JSON-patch to the synthesized object file. See https://datatracker.ietf.org/doc/html/rfc6902 for more information. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Writes the file to the project's output directory.
addDeletionOverride
public addDeletionOverride(path: string): void
Syntactic sugar for addOverride(path, undefined).
pathRequired
- Type: string
The path of the value to delete.
addOverride
public addOverride(path: string, value: any): void
Adds an override to the synthesized object file.
If the override is nested, separate each nested level using a dot (.) in the path parameter. If there is an array as part of the nesting, specify the index in the path.
To include a literal . in the property name, prefix with a \. In most
programming languages you will need to write this as "\\." because the
\ itself will need to be escaped.
For example,
project.tsconfig.file.addOverride('compilerOptions.alwaysStrict', true);
project.tsconfig.file.addOverride('compilerOptions.lib', ['dom', 'dom.iterable', 'esnext']);
would add the overrides
"compilerOptions": {
"alwaysStrict": true,
"lib": [
"dom",
"dom.iterable",
"esnext"
]
...
}
...
pathRequired
- Type: string
The path of the property, you can use dot notation to override values in complex types.
Any intermediate keys will be created as needed.
valueRequired
- Type: any
The value.
Could be primitive or complex.
addToArray
public addToArray(path: string, values: ...any[]): void
Adds to an array in the synthesized object file.
If the array is nested, separate each nested level using a dot (.) in the path parameter. If there is an array as part of the nesting, specify the index in the path.
To include a literal . in the property name, prefix with a \. In most
programming languages you will need to write this as "\\." because the
\ itself will need to be escaped.
For example, with the following object file
"compilerOptions": {
"exclude": ["node_modules"],
"lib": ["es2020"]
...
}
...
project.tsconfig.file.addToArray('compilerOptions.exclude', 'coverage');
project.tsconfig.file.addToArray('compilerOptions.lib', 'dom', 'dom.iterable', 'esnext');
would result in the following object file
"compilerOptions": {
"exclude": ["node_modules", "coverage"],
"lib": ["es2020", "dom", "dom.iterable", "esnext"]
...
}
...
pathRequired
- Type: string
The path of the property, you can use dot notation to att to arrays in complex types.
Any intermediate keys will be created as needed.
valuesRequired
- Type: ...any[]
The values to add.
Could be primitive or complex.
patch
public patch(patches: ...JsonPatch[]): void
Applies an RFC 6902 JSON-patch to the synthesized object file. See https://datatracker.ietf.org/doc/html/rfc6902 for more information.
For example, with the following object file
"compilerOptions": {
"exclude": ["node_modules"],
"lib": ["es2020"]
...
}
...
project.tsconfig.file.patch(JsonPatch.add("/compilerOptions/exclude/-", "coverage"));
project.tsconfig.file.patch(JsonPatch.replace("/compilerOptions/lib", ["dom", "dom.iterable", "esnext"]));
would result in the following object file
"compilerOptions": {
"exclude": ["node_modules", "coverage"],
"lib": ["dom", "dom.iterable", "esnext"]
...
}
...
patchesRequired
- Type: ...JsonPatch[]
The patch operations to apply.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { IniFile } from 'projen'
IniFile.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { IniFile } from 'projen'
IniFile.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| string | The absolute path of this file. |
| string | The file path, relative to the project's outdir. |
| boolean | Indicates if the file has been changed during synthesis. |
| string | The projen marker, used to identify files as projen-generated. |
| boolean | Indicates if the file should be marked as executable. |
| boolean | Indicates if the file should be read-only or read-write. |
| boolean | Indicates if empty objects and arrays are omitted from the output object. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
absolutePathRequired
public readonly absolutePath: string;
- Type: string
The absolute path of this file.
pathRequired
public readonly path: string;
- Type: string
The file path, relative to the project's outdir.
changedOptional
public readonly changed: boolean;
- Type: boolean
Indicates if the file has been changed during synthesis.
This property is
only available in postSynthesize() hooks. If this is undefined, the
file has not been synthesized yet.
markerOptional
public readonly marker: string;
- Type: string
The projen marker, used to identify files as projen-generated.
Value is undefined if the project is being ejected.
executableRequired
public readonly executable: boolean;
- Type: boolean
Indicates if the file should be marked as executable.
readonlyRequired
public readonly readonly: boolean;
- Type: boolean
Indicates if the file should be read-only or read-write.
omitEmptyRequired
public readonly omitEmpty: boolean;
- Type: boolean
Indicates if empty objects and arrays are omitted from the output object.
JsonFile
Represents a JSON file.
Initializers
import { JsonFile } from 'projen'
new JsonFile(scope: IConstruct, filePath: string, options: JsonFileOptions)
| Name | Type | Description |
|---|---|---|
| constructs.IConstruct | No description. |
| string | No description. |
| | No description. |
scopeRequired
- Type: constructs.IConstruct
filePathRequired
- Type: string
optionsRequired
- Type: JsonFileOptions
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Writes the file to the project's output directory. |
| Syntactic sugar for addOverride(path, undefined). |
| Adds an override to the synthesized object file. |
| Adds to an array in the synthesized object file. |
| Applies an RFC 6902 JSON-patch to the synthesized object file. See https://datatracker.ietf.org/doc/html/rfc6902 for more information. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Writes the file to the project's output directory.
addDeletionOverride
public addDeletionOverride(path: string): void
Syntactic sugar for addOverride(path, undefined).
pathRequired
- Type: string
The path of the value to delete.
addOverride
public addOverride(path: string, value: any): void
Adds an override to the synthesized object file.
If the override is nested, separate each nested level using a dot (.) in the path parameter. If there is an array as part of the nesting, specify the index in the path.
To include a literal . in the property name, prefix with a \. In most
programming languages you will need to write this as "\\." because the
\ itself will need to be escaped.
For example,
project.tsconfig.file.addOverride('compilerOptions.alwaysStrict', true);
project.tsconfig.file.addOverride('compilerOptions.lib', ['dom', 'dom.iterable', 'esnext']);
would add the overrides
"compilerOptions": {
"alwaysStrict": true,
"lib": [
"dom",
"dom.iterable",
"esnext"
]
...
}
...
pathRequired
- Type: string
The path of the property, you can use dot notation to override values in complex types.
Any intermediate keys will be created as needed.
valueRequired
- Type: any
The value.
Could be primitive or complex.
addToArray
public addToArray(path: string, values: ...any[]): void
Adds to an array in the synthesized object file.
If the array is nested, separate each nested level using a dot (.) in the path parameter. If there is an array as part of the nesting, specify the index in the path.
To include a literal . in the property name, prefix with a \. In most
programming languages you will need to write this as "\\." because the
\ itself will need to be escaped.
For example, with the following object file
"compilerOptions": {
"exclude": ["node_modules"],
"lib": ["es2020"]
...
}
...
project.tsconfig.file.addToArray('compilerOptions.exclude', 'coverage');
project.tsconfig.file.addToArray('compilerOptions.lib', 'dom', 'dom.iterable', 'esnext');
would result in the following object file
"compilerOptions": {
"exclude": ["node_modules", "coverage"],
"lib": ["es2020", "dom", "dom.iterable", "esnext"]
...
}
...
pathRequired
- Type: string
The path of the property, you can use dot notation to att to arrays in complex types.
Any intermediate keys will be created as needed.
valuesRequired
- Type: ...any[]
The values to add.
Could be primitive or complex.
patch
public patch(patches: ...JsonPatch[]): void
Applies an RFC 6902 JSON-patch to the synthesized object file. See https://datatracker.ietf.org/doc/html/rfc6902 for more information.
For example, with the following object file
"compilerOptions": {
"exclude": ["node_modules"],
"lib": ["es2020"]
...
}
...
project.tsconfig.file.patch(JsonPatch.add("/compilerOptions/exclude/-", "coverage"));
project.tsconfig.file.patch(JsonPatch.replace("/compilerOptions/lib", ["dom", "dom.iterable", "esnext"]));
would result in the following object file
"compilerOptions": {
"exclude": ["node_modules", "coverage"],
"lib": ["dom", "dom.iterable", "esnext"]
...
}
...
patchesRequired
- Type: ...JsonPatch[]
The patch operations to apply.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { JsonFile } from 'projen'
JsonFile.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { JsonFile } from 'projen'
JsonFile.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| string | The absolute path of this file. |
| string | The file path, relative to the project's outdir. |
| boolean | Indicates if the file has been changed during synthesis. |
| string | The projen marker, used to identify files as projen-generated. |
| boolean | Indicates if the file should be marked as executable. |
| boolean | Indicates if the file should be read-only or read-write. |
| boolean | Indicates if empty objects and arrays are omitted from the output object. |
| boolean | No description. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
absolutePathRequired
public readonly absolutePath: string;
- Type: string
The absolute path of this file.
pathRequired
public readonly path: string;
- Type: string
The file path, relative to the project's outdir.
changedOptional
public readonly changed: boolean;
- Type: boolean
Indicates if the file has been changed during synthesis.
This property is
only available in postSynthesize() hooks. If this is undefined, the
file has not been synthesized yet.
markerOptional
public readonly marker: string;
- Type: string
The projen marker, used to identify files as projen-generated.
Value is undefined if the project is being ejected.
executableRequired
public readonly executable: boolean;
- Type: boolean
Indicates if the file should be marked as executable.
readonlyRequired
public readonly readonly: boolean;
- Type: boolean
Indicates if the file should be read-only or read-write.
omitEmptyRequired
public readonly omitEmpty: boolean;
- Type: boolean
Indicates if empty objects and arrays are omitted from the output object.
supportsCommentsRequired
public readonly supportsComments: boolean;
- Type: boolean
License
Initializers
import { License } from 'projen'
new License(project: Project, options: LicenseOptions)
| Name | Type | Description |
|---|---|---|
| | No description. |
| | No description. |
projectRequired
- Type: Project
optionsRequired
- Type: LicenseOptions
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Writes the file to the project's output directory. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Writes the file to the project's output directory.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { License } from 'projen'
License.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { License } from 'projen'
License.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| string | The absolute path of this file. |
| string | The file path, relative to the project's outdir. |
| boolean | Indicates if the file has been changed during synthesis. |
| string | The projen marker, used to identify files as projen-generated. |
| boolean | Indicates if the file should be marked as executable. |
| boolean | Indicates if the file should be read-only or read-write. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
absolutePathRequired
public readonly absolutePath: string;
- Type: string
The absolute path of this file.
pathRequired
public readonly path: string;
- Type: string
The file path, relative to the project's outdir.
changedOptional
public readonly changed: boolean;
- Type: boolean
Indicates if the file has been changed during synthesis.
This property is
only available in postSynthesize() hooks. If this is undefined, the
file has not been synthesized yet.
markerOptional
public readonly marker: string;
- Type: string
The projen marker, used to identify files as projen-generated.
Value is undefined if the project is being ejected.
executableRequired
public readonly executable: boolean;
- Type: boolean
Indicates if the file should be marked as executable.
readonlyRequired
public readonly readonly: boolean;
- Type: boolean
Indicates if the file should be read-only or read-write.
Logger
Project-level logging utilities.
Initializers
import { Logger } from 'projen'
new Logger(scope: IConstruct, options?: LoggerOptions)
| Name | Type | Description |
|---|---|---|
| constructs.IConstruct | No description. |
| | No description. |
scopeRequired
- Type: constructs.IConstruct
optionsOptional
- Type: LoggerOptions
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Synthesizes files to the project output directory. |
| Log a message to stderr with DEBUG severity. |
| Log a message to stderr with ERROR severity. |
| Log a message to stderr with INFO severity. |
| Log a message to stderr with a given logging level. |
| Log a message to stderr with VERBOSE severity. |
| Log a message to stderr with WARN severity. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Synthesizes files to the project output directory.
debug
public debug(text: ...any[]): void
Log a message to stderr with DEBUG severity.
textRequired
- Type: ...any[]
strings or objects to print.
error
public error(text: ...any[]): void
Log a message to stderr with ERROR severity.
textRequired
- Type: ...any[]
strings or objects to print.
info
public info(text: ...any[]): void
Log a message to stderr with INFO severity.
textRequired
- Type: ...any[]
strings or objects to print.
log
public log(level: LogLevel, text: ...any[]): void
Log a message to stderr with a given logging level.
The message will be
printed as long as logger.level is set to the message's severity or higher.
levelRequired
- Type: LogLevel
Logging verbosity.
textRequired
- Type: ...any[]
strings or objects to print.
verbose
public verbose(text: ...any[]): void
Log a message to stderr with VERBOSE severity.
textRequired
- Type: ...any[]
strings or objects to print.
warn
public warn(text: ...any[]): void
Log a message to stderr with WARN severity.
textRequired
- Type: ...any[]
strings or objects to print.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { Logger } from 'projen'
Logger.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { Logger } from 'projen'
Logger.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
Makefile
Minimal Makefile.
Initializers
import { Makefile } from 'projen'
new Makefile(project: Project, filePath: string, options?: MakefileOptions)
| Name | Type | Description |
|---|---|---|
| | No description. |
| string | No description. |
| | No description. |
projectRequired
- Type: Project
filePathRequired
- Type: string
optionsOptional
- Type: MakefileOptions
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Writes the file to the project's output directory. |
| Add a target to all. |
| Add multiple targets to all. |
| Add a rule to the Makefile. |
| Add multiple rules to the Makefile. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Writes the file to the project's output directory.
addAll
public addAll(target: string): Makefile
Add a target to all.
targetRequired
- Type: string
addAlls
public addAlls(targets: ...string[]): Makefile
Add multiple targets to all.
targetsRequired
- Type: ...string[]
addRule
public addRule(rule: Rule): Makefile
Add a rule to the Makefile.
ruleRequired
- Type: Rule
addRules
public addRules(rules: ...Rule[]): Makefile
Add multiple rules to the Makefile.
rulesRequired
- Type: ...Rule[]
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { Makefile } from 'projen'
Makefile.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { Makefile } from 'projen'
Makefile.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| string | The absolute path of this file. |
| string | The file path, relative to the project's outdir. |
| boolean | Indicates if the file has been changed during synthesis. |
| string | The projen marker, used to identify files as projen-generated. |
| boolean | Indicates if the file should be marked as executable. |
| boolean | Indicates if the file should be read-only or read-write. |
| | List of rule definitions. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
absolutePathRequired
public readonly absolutePath: string;
- Type: string
The absolute path of this file.
pathRequired
public readonly path: string;
- Type: string
The file path, relative to the project's outdir.
changedOptional
public readonly changed: boolean;
- Type: boolean
Indicates if the file has been changed during synthesis.
This property is
only available in postSynthesize() hooks. If this is undefined, the
file has not been synthesized yet.
markerOptional
public readonly marker: string;
- Type: string
The projen marker, used to identify files as projen-generated.
Value is undefined if the project is being ejected.
executableRequired
public readonly executable: boolean;
- Type: boolean
Indicates if the file should be marked as executable.
readonlyRequired
public readonly readonly: boolean;
- Type: boolean
Indicates if the file should be read-only or read-write.
rulesRequired
public readonly rules: Rule[];
- Type: Rule[]
List of rule definitions.
ObjectFile
Represents an Object file.
Initializers
import { ObjectFile } from 'projen'
new ObjectFile(scope: IConstruct, filePath: string, options: ObjectFileOptions)
| Name | Type | Description |
|---|---|---|
| constructs.IConstruct | No description. |
| string | No description. |
| | No description. |
scopeRequired
- Type: constructs.IConstruct
filePathRequired
- Type: string
optionsRequired
- Type: ObjectFileOptions
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Writes the file to the project's output directory. |
| Syntactic sugar for addOverride(path, undefined). |
| Adds an override to the synthesized object file. |
| Adds to an array in the synthesized object file. |
| Applies an RFC 6902 JSON-patch to the synthesized object file. See https://datatracker.ietf.org/doc/html/rfc6902 for more information. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Writes the file to the project's output directory.
addDeletionOverride
public addDeletionOverride(path: string): void
Syntactic sugar for addOverride(path, undefined).
pathRequired
- Type: string
The path of the value to delete.
addOverride
public addOverride(path: string, value: any): void
Adds an override to the synthesized object file.
If the override is nested, separate each nested level using a dot (.) in the path parameter. If there is an array as part of the nesting, specify the index in the path.
To include a literal . in the property name, prefix with a \. In most
programming languages you will need to write this as "\\." because the
\ itself will need to be escaped.
For example,
project.tsconfig.file.addOverride('compilerOptions.alwaysStrict', true);
project.tsconfig.file.addOverride('compilerOptions.lib', ['dom', 'dom.iterable', 'esnext']);
would add the overrides
"compilerOptions": {
"alwaysStrict": true,
"lib": [
"dom",
"dom.iterable",
"esnext"
]
...
}
...
pathRequired
- Type: string
The path of the property, you can use dot notation to override values in complex types.
Any intermediate keys will be created as needed.
valueRequired
- Type: any
The value.
Could be primitive or complex.
addToArray
public addToArray(path: string, values: ...any[]): void
Adds to an array in the synthesized object file.
If the array is nested, separate each nested level using a dot (.) in the path parameter. If there is an array as part of the nesting, specify the index in the path.
To include a literal . in the property name, prefix with a \. In most
programming languages you will need to write this as "\\." because the
\ itself will need to be escaped.
For example, with the following object file
"compilerOptions": {
"exclude": ["node_modules"],
"lib": ["es2020"]
...
}
...
project.tsconfig.file.addToArray('compilerOptions.exclude', 'coverage');
project.tsconfig.file.addToArray('compilerOptions.lib', 'dom', 'dom.iterable', 'esnext');
would result in the following object file
"compilerOptions": {
"exclude": ["node_modules", "coverage"],
"lib": ["es2020", "dom", "dom.iterable", "esnext"]
...
}
...
pathRequired
- Type: string
The path of the property, you can use dot notation to att to arrays in complex types.
Any intermediate keys will be created as needed.
valuesRequired
- Type: ...any[]
The values to add.
Could be primitive or complex.
patch
public patch(patches: ...JsonPatch[]): void
Applies an RFC 6902 JSON-patch to the synthesized object file. See https://datatracker.ietf.org/doc/html/rfc6902 for more information.
For example, with the following object file
"compilerOptions": {
"exclude": ["node_modules"],
"lib": ["es2020"]
...
}
...
project.tsconfig.file.patch(JsonPatch.add("/compilerOptions/exclude/-", "coverage"));
project.tsconfig.file.patch(JsonPatch.replace("/compilerOptions/lib", ["dom", "dom.iterable", "esnext"]));
would result in the following object file
"compilerOptions": {
"exclude": ["node_modules", "coverage"],
"lib": ["dom", "dom.iterable", "esnext"]
...
}
...
patchesRequired
- Type: ...JsonPatch[]
The patch operations to apply.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { ObjectFile } from 'projen'
ObjectFile.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { ObjectFile } from 'projen'
ObjectFile.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| string | The absolute path of this file. |
| string | The file path, relative to the project's outdir. |
| boolean | Indicates if the file has been changed during synthesis. |
| string | The projen marker, used to identify files as projen-generated. |
| boolean | Indicates if the file should be marked as executable. |
| boolean | Indicates if the file should be read-only or read-write. |
| boolean | Indicates if empty objects and arrays are omitted from the output object. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
absolutePathRequired
public readonly absolutePath: string;
- Type: string
The absolute path of this file.
pathRequired
public readonly path: string;
- Type: string
The file path, relative to the project's outdir.
changedOptional
public readonly changed: boolean;
- Type: boolean
Indicates if the file has been changed during synthesis.
This property is
only available in postSynthesize() hooks. If this is undefined, the
file has not been synthesized yet.
markerOptional
public readonly marker: string;
- Type: string
The projen marker, used to identify files as projen-generated.
Value is undefined if the project is being ejected.
executableRequired
public readonly executable: boolean;
- Type: boolean
Indicates if the file should be marked as executable.
readonlyRequired
public readonly readonly: boolean;
- Type: boolean
Indicates if the file should be read-only or read-write.
omitEmptyRequired
public readonly omitEmpty: boolean;
- Type: boolean
Indicates if empty objects and arrays are omitted from the output object.
Project
Base project.
Initializers
import { Project } from 'projen'
new Project(options: ProjectOptions)
| Name | Type | Description |
|---|---|---|
| | No description. |
optionsRequired
- Type: ProjectOptions
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Exclude the matching files from pre-synth cleanup. |
| Adds a .gitignore pattern. |
| Exclude these files from the bundled package. |
| Adds a new task to this project. |
| Prints a "tip" message during synthesis. |
| Consider a set of files as "generated". |
| Called after all components are synthesized. |
| Called before all components are synthesized. |
| Removes a task from a project. |
| Returns the shell command to execute in order to run a task. |
| Synthesize all project files into outdir. |
| Finds a file at the specified relative path within this project and all its subprojects. |
| Finds a json file by name. |
| Finds an object file (like JsonFile, YamlFile, etc.) by name. |
| Finds a file at the specified relative path within this project and removes it. |
toString
public toString(): string
Returns a string representation of this construct.
addExcludeFromCleanup
public addExcludeFromCleanup(globs: ...string[]): void
Exclude the matching files from pre-synth cleanup.
Can be used when, for example, some source files include the projen marker and we don't want them to be erased during synth.
globsRequired
- Type: ...string[]
The glob patterns to match.
addGitIgnore
public addGitIgnore(pattern: string): void
Adds a .gitignore pattern.
patternRequired
- Type: string
The glob pattern to ignore.
addPackageIgnore
public addPackageIgnore(_pattern: string): void
Exclude these files from the bundled package.
Implemented by project types based on the
packaging mechanism. For example, NodeProject delegates this to .npmignore.
_patternRequired
- Type: string
The glob pattern to exclude.
addTask
public addTask(name: string, props?: TaskOptions): Task
Adds a new task to this project.
This will fail if the project already has a task with this name.
nameRequired
- Type: string
The task name to add.
propsOptional
- Type: TaskOptions
Task properties.
addTip
addTippublic addTip(message: string): void
Prints a "tip" message during synthesis.
messageRequired
- Type: string
The message.
annotateGenerated
public annotateGenerated(_glob: string): void
Consider a set of files as "generated".
This method is implemented by derived classes and used for example, to add git attributes to tell GitHub that certain files are generated.
_globRequired
- Type: string
the glob pattern to match (could be a file path).
postSynthesize
public postSynthesize(): void
Called after all components are synthesized.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before all components are synthesized.
removeTask
public removeTask(name: string): Task
Removes a task from a project.
nameRequired
- Type: string
The name of the task to remove.
runTaskCommand
public runTaskCommand(task: Task): string
Returns the shell command to execute in order to run a task.
By default, this is npx projen@<version> <task>
taskRequired
- Type: Task
The task for which the command is required.
synth
public synth(): void
Synthesize all project files into outdir.
- Call "this.preSynthesize()"
- Delete all generated files
- Synthesize all subprojects
- Synthesize all components of this project
- Call "postSynthesize()" for all components of this project
- Call "this.postSynthesize()"
tryFindFile
public tryFindFile(filePath: string): FileBase
Finds a file at the specified relative path within this project and all its subprojects.
filePathRequired
- Type: string
The file path.
If this path is relative, it will be resolved from the root of this project.
tryFindJsonFile
tryFindJsonFilepublic tryFindJsonFile(filePath: string): JsonFile
Finds a json file by name.
filePathRequired
- Type: string
The file path.
tryFindObjectFile
public tryFindObjectFile(filePath: string): ObjectFile
Finds an object file (like JsonFile, YamlFile, etc.) by name.
filePathRequired
- Type: string
The file path.
tryRemoveFile
public tryRemoveFile(filePath: string): FileBase
Finds a file at the specified relative path within this project and removes it.
filePathRequired
- Type: string
The file path.
If this path is relative, it will be resolved from the root of this project.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a project. |
| Find the closest ancestor project for given construct. |
isConstruct
import { Project } from 'projen'
Project.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isProject
import { Project } from 'projen'
Project.isProject(x: any)
Test whether the given construct is a project.
xRequired
- Type: any
of
import { Project } from 'projen'
Project.of(construct: IConstruct)
Find the closest ancestor project for given construct.
When given a project, this it the project itself.
constructRequired
- Type: constructs.IConstruct
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| boolean | Whether to commit the managed files by default. |
| | No description. |
| | Returns all the components within this project. |
| | Project dependencies. |
| boolean | Whether or not the project is being ejected. |
| | All files in this project. |
| | The .gitattributes file for this repository. |
| | .gitignore. |
| | Logging utilities. |
| string | Project name. |
| string | Absolute output directory of this project. |
| | No description. |
| | No description. |
| | No description. |
| | Manages the build process of the project. |
| string | The command to use in order to run the projen CLI. |
| | The root project. |
| | Returns all the subprojects within this project. |
| | Project tasks. |
| | No description. |
| | This is the "default" task, the one that executes "projen". |
| | The options used when this project is bootstrapped via projen new. |
| | A parent project. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
buildTaskRequired
public readonly buildTask: Task;
- Type: Task
commitGeneratedRequired
public readonly commitGenerated: boolean;
- Type: boolean
Whether to commit the managed files by default.
compileTaskRequired
public readonly compileTask: Task;
- Type: Task
componentsRequired
public readonly components: Component[];
- Type: Component[]
Returns all the components within this project.
depsRequired
public readonly deps: Dependencies;
- Type: Dependencies
Project dependencies.
ejectedRequired
public readonly ejected: boolean;
- Type: boolean
Whether or not the project is being ejected.
filesRequired
public readonly files: FileBase[];
- Type: FileBase[]
All files in this project.
gitattributesRequired
public readonly gitattributes: GitAttributesFile;
- Type: GitAttributesFile
The .gitattributes file for this repository.
gitignoreRequired
public readonly gitignore: IgnoreFile;
- Type: IgnoreFile
.gitignore.
loggerRequired
public readonly logger: Logger;
- Type: Logger
Logging utilities.
nameRequired
public readonly name: string;
- Type: string
Project name.
outdirRequired
public readonly outdir: string;
- Type: string
Absolute output directory of this project.
packageTaskRequired
public readonly packageTask: Task;
- Type: Task
postCompileTaskRequired
public readonly postCompileTask: Task;
- Type: Task
preCompileTaskRequired
public readonly preCompileTask: Task;
- Type: Task
projectBuildRequired
public readonly projectBuild: ProjectBuild;
- Type: ProjectBuild
Manages the build process of the project.
projenCommandRequired
public readonly projenCommand: string;
- Type: string
The command to use in order to run the projen CLI.
rootRequired
public readonly root: Project;
- Type: Project
The root project.
subprojectsRequired
public readonly subprojects: Project[];
- Type: Project[]
Returns all the subprojects within this project.
tasksRequired
public readonly tasks: Tasks;
- Type: Tasks
Project tasks.
testTaskRequired
public readonly testTask: Task;
- Type: Task
defaultTaskOptional
public readonly defaultTask: Task;
- Type: Task
This is the "default" task, the one that executes "projen".
Undefined if the project is being ejected.
initProjectOptional
public readonly initProject: InitProject;
- Type: InitProject
The options used when this project is bootstrapped via projen new.
It includes the original set of options passed to the CLI and also the JSII FQN of the project type.
parentOptional
public readonly parent: Project;
- Type: Project
A parent project.
If undefined, this is the root project.
Constants
| Name | Type | Description |
|---|---|---|
| string | The name of the default task (the task executed when projen is run without arguments). |
DEFAULT_TASKRequired
public readonly DEFAULT_TASK: string;
- Type: string
The name of the default task (the task executed when projen is run without arguments).
Normally this task should synthesize the project files.
ProjectBuild
Manages a standard build process for all projects.
Build spawns these tasks in order:
- default
- pre-compile
- compile
- post-compile
- test
- package
Initializers
import { ProjectBuild } from 'projen'
new ProjectBuild(project: Project)
| Name | Type | Description |
|---|---|---|
| | No description. |
projectRequired
- Type: Project
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Synthesizes files to the project output directory. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Synthesizes files to the project output directory.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { ProjectBuild } from 'projen'
ProjectBuild.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { ProjectBuild } from 'projen'
ProjectBuild.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| | The task responsible for a full release build. |
| | Compiles the code. |
| | The "package" task. |
| | Post-compile task. |
| | Pre-compile task. |
| | Tests the code. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
buildTaskRequired
public readonly buildTask: Task;
- Type: Task
The task responsible for a full release build.
compileTaskRequired
public readonly compileTask: Task;
- Type: Task
Compiles the code.
By default for node.js projects this task is empty.
packageTaskRequired
public readonly packageTask: Task;
- Type: Task
The "package" task.
postCompileTaskRequired
public readonly postCompileTask: Task;
- Type: Task
Post-compile task.
preCompileTaskRequired
public readonly preCompileTask: Task;
- Type: Task
Pre-compile task.
testTaskRequired
public readonly testTask: Task;
- Type: Task
Tests the code.
ProjectTree
Initializers
import { ProjectTree } from 'projen'
new ProjectTree(project: Project)
| Name | Type | Description |
|---|---|---|
| | No description. |
projectRequired
- Type: Project
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Synthesizes files to the project output directory. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Synthesizes files to the project output directory.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { ProjectTree } from 'projen'
ProjectTree.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { ProjectTree } from 'projen'
ProjectTree.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| | No description. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
fileRequired
public readonly file: JsonFile;
- Type: JsonFile
Projenrc
Initializers
import { Projenrc } from 'projen'
new Projenrc(project: Project, options?: ProjenrcJsonOptions)
| Name | Type | Description |
|---|---|---|
| | No description. |
| | No description. |
projectRequired
- Type: Project
optionsOptional
- Type: ProjenrcJsonOptions
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Synthesizes files to the project output directory. |
toString
toStringpublic toString(): string
Returns a string representation of this construct.
postSynthesize
postSynthesizepublic postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
preSynthesizepublic preSynthesize(): void
Called before synthesis.
synthesize
synthesizepublic synthesize(): void
Synthesizes files to the project output directory.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
| Returns the Projenrc instance associated with a project or undefined if there is no Projenrc. |
isConstruct
isConstructimport { Projenrc } from 'projen'
Projenrc.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
isComponentimport { Projenrc } from 'projen'
Projenrc.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
of
ofimport { Projenrc } from 'projen'
Projenrc.of(project: Project)
Returns the Projenrc instance associated with a project or undefined if there is no Projenrc.
projectRequired
- Type: Project
The project.
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| string | The path of the projenrc file. |
nodeRequired
node- Deprecated: use
ProjenrcJson
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
project- Deprecated: use
ProjenrcJson
public readonly project: Project;
- Type: Project
filePathRequired
filePath- Deprecated: use
ProjenrcJson
public readonly filePath: string;
- Type: string
The path of the projenrc file.
ProjenrcFile
A component representing the projen runtime configuration.
Initializers
import { ProjenrcFile } from 'projen'
new ProjenrcFile(scope: IConstruct, id?: string)
| Name | Type | Description |
|---|---|---|
| constructs.IConstruct | No description. |
| string | No description. |
scopeRequired
- Type: constructs.IConstruct
idOptional
- Type: string
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Synthesizes files to the project output directory. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Synthesizes files to the project output directory.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
| Returns the Projenrc instance associated with a project or undefined if there is no Projenrc. |
isConstruct
import { ProjenrcFile } from 'projen'
ProjenrcFile.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { ProjenrcFile } from 'projen'
ProjenrcFile.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
of
import { ProjenrcFile } from 'projen'
ProjenrcFile.of(project: Project)
Returns the Projenrc instance associated with a project or undefined if there is no Projenrc.
projectRequired
- Type: Project
The project.
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| string | The path of the projenrc file. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
filePathRequired
public readonly filePath: string;
- Type: string
The path of the projenrc file.
ProjenrcJson
Sets up a project to use JSON for projenrc.
Initializers
import { ProjenrcJson } from 'projen'
new ProjenrcJson(project: Project, options?: ProjenrcJsonOptions)
| Name | Type | Description |
|---|---|---|
| | No description. |
| | No description. |
projectRequired
- Type: Project
optionsOptional
- Type: ProjenrcJsonOptions
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Synthesizes files to the project output directory. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Synthesizes files to the project output directory.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
| Returns the Projenrc instance associated with a project or undefined if there is no Projenrc. |
isConstruct
import { ProjenrcJson } from 'projen'
ProjenrcJson.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { ProjenrcJson } from 'projen'
ProjenrcJson.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
of
import { ProjenrcJson } from 'projen'
ProjenrcJson.of(project: Project)
Returns the Projenrc instance associated with a project or undefined if there is no Projenrc.
projectRequired
- Type: Project
The project.
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| string | The path of the projenrc file. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
filePathRequired
public readonly filePath: string;
- Type: string
The path of the projenrc file.
Renovatebot
Defines renovatebot configuration for projen project.
Ignores the versions controlled by Projen.
Initializers
import { Renovatebot } from 'projen'
new Renovatebot(project: Project, options?: RenovatebotOptions)
| Name | Type | Description |
|---|---|---|
| | No description. |
| | No description. |
projectRequired
- Type: Project
optionsOptional
- Type: RenovatebotOptions
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Synthesizes files to the project output directory. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Synthesizes files to the project output directory.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { Renovatebot } from 'projen'
Renovatebot.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { Renovatebot } from 'projen'
Renovatebot.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| | The file holding the renovatebot configuration. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
fileRequired
public readonly file: JsonFile;
- Type: JsonFile
The file holding the renovatebot configuration.
SampleDir
Renders the given files into the directory if the directory does not exist.
Use this to create sample code files
Initializers
import { SampleDir } from 'projen'
new SampleDir(project: Project, dir: string, options: SampleDirOptions)
| Name | Type | Description |
|---|---|---|
| | Parent project to add files to. |
| string | directory to add files to. |
| | options for which files to create. |
projectRequired
- Type: Project
Parent project to add files to.
dirRequired
- Type: string
directory to add files to.
If directory already exists, nothing is added.
optionsRequired
- Type: SampleDirOptions
options for which files to create.
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Synthesizes files to the project output directory. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Synthesizes files to the project output directory.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { SampleDir } from 'projen'
SampleDir.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { SampleDir } from 'projen'
SampleDir.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
SampleFile
Produces a file with the given contents but only once, if the file doesn't already exist.
Use this for creating example code files or other resources.
Initializers
import { SampleFile } from 'projen'
new SampleFile(project: Project, filePath: string, options: SampleFileOptions)
| Name | Type | Description |
|---|---|---|
| | - the project to tie this file to. |
| string | - the relative path in the project to put the file. |
| | - the options for the file. |
projectRequired
- Type: Project
the project to tie this file to.
filePathRequired
- Type: string
the relative path in the project to put the file.
optionsRequired
- Type: SampleFileOptions
the options for the file.
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Synthesizes files to the project output directory. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Synthesizes files to the project output directory.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { SampleFile } from 'projen'
SampleFile.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { SampleFile } from 'projen'
SampleFile.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
SampleReadme
Represents a README.md sample file. You are expected to manage this file after creation.
Initializers
import { SampleReadme } from 'projen'
new SampleReadme(project: Project, props?: SampleReadmeProps)
| Name | Type | Description |
|---|---|---|
| | No description. |
| | No description. |
projectRequired
- Type: Project
propsOptional
- Type: SampleReadmeProps
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Synthesizes files to the project output directory. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Synthesizes files to the project output directory.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { SampleReadme } from 'projen'
SampleReadme.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { SampleReadme } from 'projen'
SampleReadme.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
SourceCode
Represents a source file.
Initializers
import { SourceCode } from 'projen'
new SourceCode(project: Project, filePath: string, options?: SourceCodeOptions)
| Name | Type | Description |
|---|---|---|
| | No description. |
| string | No description. |
| | No description. |
projectRequired
- Type: Project
filePathRequired
- Type: string
optionsOptional
- Type: SourceCodeOptions
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Synthesizes files to the project output directory. |
| Decreases the indentation level and closes a code block. |
| Emit a line of code. |
| Opens a code block and increases the indentation level. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Synthesizes files to the project output directory.
close
public close(code?: string): void
Decreases the indentation level and closes a code block.
codeOptional
- Type: string
The code after the block is closed (e.g. }).
line
public line(code?: string): void
Emit a line of code.
codeOptional
- Type: string
The contents, if not specified, just adds a newline.
open
public open(code?: string): void
Opens a code block and increases the indentation level.
codeOptional
- Type: string
The code before the block starts (e.g. export class {).
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { SourceCode } from 'projen'
SourceCode.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { SourceCode } from 'projen'
SourceCode.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| string | No description. |
| string | No description. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
filePathRequired
public readonly filePath: string;
- Type: string
markerOptional
public readonly marker: string;
- Type: string
Tasks
Defines project tasks.
Tasks extend the projen CLI by adding subcommands to it. Task definitions are
synthesized into .projen/tasks.json.
Initializers
import { Tasks } from 'projen'
new Tasks(project: Project)
| Name | Type | Description |
|---|---|---|
| | No description. |
projectRequired
- Type: Project
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Synthesizes files to the project output directory. |
| Adds global environment. |
| Adds a task to a project. |
| Removes a task from a project. |
| Finds a task by name. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Synthesizes files to the project output directory.
addEnvironment
public addEnvironment(name: string, value: string): void
Adds global environment.
nameRequired
- Type: string
Environment variable name.
valueRequired
- Type: string
Value.
addTask
public addTask(name: string, options?: TaskOptions): Task
Adds a task to a project.
nameRequired
- Type: string
The name of the task.
optionsOptional
- Type: TaskOptions
Task options.
removeTask
public removeTask(name: string): Task
Removes a task from a project.
nameRequired
- Type: string
The name of the task to remove.
tryFind
public tryFind(name: string): Task
Finds a task by name.
Returns undefined if the task cannot be found.
nameRequired
- Type: string
The name of the task.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { Tasks } from 'projen'
Tasks.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { Tasks } from 'projen'
Tasks.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| | All tasks. |
| {[ key: string ]: string} | Returns a copy of the currently global environment for this project. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
allRequired
public readonly all: Task[];
- Type: Task[]
All tasks.
envRequired
public readonly env: {[ key: string ]: string};
- Type: {[ key: string ]: string}
Returns a copy of the currently global environment for this project.
TextFile
A text file.
Initializers
import { TextFile } from 'projen'
new TextFile(scope: IConstruct, filePath: string, options?: TextFileOptions)
| Name | Type | Description |
|---|---|---|
| constructs.IConstruct | No description. |
| string | File path. |
| | Options. |
scopeRequired
- Type: constructs.IConstruct
filePathRequired
- Type: string
File path.
optionsOptional
- Type: TextFileOptions
Options.
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Writes the file to the project's output directory. |
| Adds a line to the text file. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Writes the file to the project's output directory.
addLine
public addLine(line: string): void
Adds a line to the text file.
lineRequired
- Type: string
the line to add (can use tokens).
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { TextFile } from 'projen'
TextFile.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { TextFile } from 'projen'
TextFile.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| string | The absolute path of this file. |
| string | The file path, relative to the project's outdir. |
| boolean | Indicates if the file has been changed during synthesis. |
| string | The projen marker, used to identify files as projen-generated. |
| boolean | Indicates if the file should be marked as executable. |
| boolean | Indicates if the file should be read-only or read-write. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
absolutePathRequired
public readonly absolutePath: string;
- Type: string
The absolute path of this file.
pathRequired
public readonly path: string;
- Type: string
The file path, relative to the project's outdir.
changedOptional
public readonly changed: boolean;
- Type: boolean
Indicates if the file has been changed during synthesis.
This property is
only available in postSynthesize() hooks. If this is undefined, the
file has not been synthesized yet.
markerOptional
public readonly marker: string;
- Type: string
The projen marker, used to identify files as projen-generated.
Value is undefined if the project is being ejected.
executableRequired
public readonly executable: boolean;
- Type: boolean
Indicates if the file should be marked as executable.
readonlyRequired
public readonly readonly: boolean;
- Type: boolean
Indicates if the file should be read-only or read-write.
TomlFile
Represents a TOML file.
Initializers
import { TomlFile } from 'projen'
new TomlFile(project: Project, filePath: string, options: TomlFileOptions)
| Name | Type | Description |
|---|---|---|
| | No description. |
| string | No description. |
| | No description. |
projectRequired
- Type: Project
filePathRequired
- Type: string
optionsRequired
- Type: TomlFileOptions
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Writes the file to the project's output directory. |
| Syntactic sugar for addOverride(path, undefined). |
| Adds an override to the synthesized object file. |
| Adds to an array in the synthesized object file. |
| Applies an RFC 6902 JSON-patch to the synthesized object file. See https://datatracker.ietf.org/doc/html/rfc6902 for more information. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Writes the file to the project's output directory.
addDeletionOverride
public addDeletionOverride(path: string): void
Syntactic sugar for addOverride(path, undefined).
pathRequired
- Type: string
The path of the value to delete.
addOverride
public addOverride(path: string, value: any): void
Adds an override to the synthesized object file.
If the override is nested, separate each nested level using a dot (.) in the path parameter. If there is an array as part of the nesting, specify the index in the path.
To include a literal . in the property name, prefix with a \. In most
programming languages you will need to write this as "\\." because the
\ itself will need to be escaped.
For example,
project.tsconfig.file.addOverride('compilerOptions.alwaysStrict', true);
project.tsconfig.file.addOverride('compilerOptions.lib', ['dom', 'dom.iterable', 'esnext']);
would add the overrides
"compilerOptions": {
"alwaysStrict": true,
"lib": [
"dom",
"dom.iterable",
"esnext"
]
...
}
...
pathRequired
- Type: string
The path of the property, you can use dot notation to override values in complex types.
Any intermediate keys will be created as needed.
valueRequired
- Type: any
The value.
Could be primitive or complex.
addToArray
public addToArray(path: string, values: ...any[]): void
Adds to an array in the synthesized object file.
If the array is nested, separate each nested level using a dot (.) in the path parameter. If there is an array as part of the nesting, specify the index in the path.
To include a literal . in the property name, prefix with a \. In most
programming languages you will need to write this as "\\." because the
\ itself will need to be escaped.
For example, with the following object file
"compilerOptions": {
"exclude": ["node_modules"],
"lib": ["es2020"]
...
}
...
project.tsconfig.file.addToArray('compilerOptions.exclude', 'coverage');
project.tsconfig.file.addToArray('compilerOptions.lib', 'dom', 'dom.iterable', 'esnext');
would result in the following object file
"compilerOptions": {
"exclude": ["node_modules", "coverage"],
"lib": ["es2020", "dom", "dom.iterable", "esnext"]
...
}
...
pathRequired
- Type: string
The path of the property, you can use dot notation to att to arrays in complex types.
Any intermediate keys will be created as needed.
valuesRequired
- Type: ...any[]
The values to add.
Could be primitive or complex.
patch
public patch(patches: ...JsonPatch[]): void
Applies an RFC 6902 JSON-patch to the synthesized object file. See https://datatracker.ietf.org/doc/html/rfc6902 for more information.
For example, with the following object file
"compilerOptions": {
"exclude": ["node_modules"],
"lib": ["es2020"]
...
}
...
project.tsconfig.file.patch(JsonPatch.add("/compilerOptions/exclude/-", "coverage"));
project.tsconfig.file.patch(JsonPatch.replace("/compilerOptions/lib", ["dom", "dom.iterable", "esnext"]));
would result in the following object file
"compilerOptions": {
"exclude": ["node_modules", "coverage"],
"lib": ["dom", "dom.iterable", "esnext"]
...
}
...
patchesRequired
- Type: ...JsonPatch[]
The patch operations to apply.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { TomlFile } from 'projen'
TomlFile.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { TomlFile } from 'projen'
TomlFile.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| string | The absolute path of this file. |
| string | The file path, relative to the project's outdir. |
| boolean | Indicates if the file has been changed during synthesis. |
| string | The projen marker, used to identify files as projen-generated. |
| boolean | Indicates if the file should be marked as executable. |
| boolean | Indicates if the file should be read-only or read-write. |
| boolean | Indicates if empty objects and arrays are omitted from the output object. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
absolutePathRequired
public readonly absolutePath: string;
- Type: string
The absolute path of this file.
pathRequired
public readonly path: string;
- Type: string
The file path, relative to the project's outdir.
changedOptional
public readonly changed: boolean;
- Type: boolean
Indicates if the file has been changed during synthesis.
This property is
only available in postSynthesize() hooks. If this is undefined, the
file has not been synthesized yet.
markerOptional
public readonly marker: string;
- Type: string
The projen marker, used to identify files as projen-generated.
Value is undefined if the project is being ejected.
executableRequired
public readonly executable: boolean;
- Type: boolean
Indicates if the file should be marked as executable.
readonlyRequired
public readonly readonly: boolean;
- Type: boolean
Indicates if the file should be read-only or read-write.
omitEmptyRequired
public readonly omitEmpty: boolean;
- Type: boolean
Indicates if empty objects and arrays are omitted from the output object.
Version
Initializers
import { Version } from 'projen'
new Version(scope: IConstruct, options: VersionOptions)
| Name | Type | Description |
|---|---|---|
| constructs.IConstruct | No description. |
| | No description. |
scopeRequired
- Type: constructs.IConstruct
optionsRequired
- Type: VersionOptions
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Synthesizes files to the project output directory. |
| Return the environment variables to modify the bump command for release branches. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Synthesizes files to the project output directory.
envForBranch
public envForBranch(branchOptions: VersionBranchOptions): {[ key: string ]: string}
Return the environment variables to modify the bump command for release branches.
These options are used to modify the behavior of the version bumping script for additional branches, by setting environment variables.
No settings are inherited from the base Version object (but any parameters that
control versions do conflict with the use of a nextVersionCommand).
branchOptionsRequired
- Type: VersionBranchOptions
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { Version } from 'projen'
Version.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { Version } from 'projen'
Version.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| string | The package used to bump package versions, as a dependency string. |
| | No description. |
| string | The name of the changelog file (under artifactsDirectory). |
| string | The name of the file that contains the release tag (under artifactsDirectory). |
| | No description. |
| string | The name of the file that contains the version (under artifactsDirectory). |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
bumpPackageRequired
public readonly bumpPackage: string;
- Type: string
The package used to bump package versions, as a dependency string.
This is a commit-and-tag-version compatible package.
bumpTaskRequired
public readonly bumpTask: Task;
- Type: Task
changelogFileNameRequired
public readonly changelogFileName: string;
- Type: string
The name of the changelog file (under artifactsDirectory).
releaseTagFileNameRequired
public readonly releaseTagFileName: string;
- Type: string
The name of the file that contains the release tag (under artifactsDirectory).
unbumpTaskRequired
public readonly unbumpTask: Task;
- Type: Task
versionFileNameRequired
public readonly versionFileName: string;
- Type: string
The name of the file that contains the version (under artifactsDirectory).
Constants
| Name | Type | Description |
|---|---|---|
| string | No description. |
STANDARD_VERSIONRequired
STANDARD_VERSION- Deprecated: use
version.bumpPackageon the component instance instead
public readonly STANDARD_VERSION: string;
- Type: string
XmlFile
Represents an XML file.
Objects passed in will be synthesized using the npm "xml" library.
Initializers
import { XmlFile } from 'projen'
new XmlFile(project: Project, filePath: string, options?: XmlFileOptions)
| Name | Type | Description |
|---|---|---|
| | No description. |
| string | No description. |
| | No description. |
projectRequired
- Type: Project
filePathRequired
- Type: string
optionsOptional
- Type: XmlFileOptions
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Writes the file to the project's output directory. |
| Syntactic sugar for addOverride(path, undefined). |
| Adds an override to the synthesized object file. |
| Adds to an array in the synthesized object file. |
| Applies an RFC 6902 JSON-patch to the synthesized object file. See https://datatracker.ietf.org/doc/html/rfc6902 for more information. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Writes the file to the project's output directory.
addDeletionOverride
public addDeletionOverride(path: string): void
Syntactic sugar for addOverride(path, undefined).
pathRequired
- Type: string
The path of the value to delete.
addOverride
public addOverride(path: string, value: any): void
Adds an override to the synthesized object file.
If the override is nested, separate each nested level using a dot (.) in the path parameter. If there is an array as part of the nesting, specify the index in the path.
To include a literal . in the property name, prefix with a \. In most
programming languages you will need to write this as "\\." because the
\ itself will need to be escaped.
For example,
project.tsconfig.file.addOverride('compilerOptions.alwaysStrict', true);
project.tsconfig.file.addOverride('compilerOptions.lib', ['dom', 'dom.iterable', 'esnext']);
would add the overrides
"compilerOptions": {
"alwaysStrict": true,
"lib": [
"dom",
"dom.iterable",
"esnext"
]
...
}
...
pathRequired
- Type: string
The path of the property, you can use dot notation to override values in complex types.
Any intermediate keys will be created as needed.
valueRequired
- Type: any
The value.
Could be primitive or complex.
addToArray
public addToArray(path: string, values: ...any[]): void
Adds to an array in the synthesized object file.
If the array is nested, separate each nested level using a dot (.) in the path parameter. If there is an array as part of the nesting, specify the index in the path.
To include a literal . in the property name, prefix with a \. In most
programming languages you will need to write this as "\\." because the
\ itself will need to be escaped.
For example, with the following object file
"compilerOptions": {
"exclude": ["node_modules"],
"lib": ["es2020"]
...
}
...
project.tsconfig.file.addToArray('compilerOptions.exclude', 'coverage');
project.tsconfig.file.addToArray('compilerOptions.lib', 'dom', 'dom.iterable', 'esnext');
would result in the following object file
"compilerOptions": {
"exclude": ["node_modules", "coverage"],
"lib": ["es2020", "dom", "dom.iterable", "esnext"]
...
}
...
pathRequired
- Type: string
The path of the property, you can use dot notation to att to arrays in complex types.
Any intermediate keys will be created as needed.
valuesRequired
- Type: ...any[]
The values to add.
Could be primitive or complex.
patch
public patch(patches: ...JsonPatch[]): void
Applies an RFC 6902 JSON-patch to the synthesized object file. See https://datatracker.ietf.org/doc/html/rfc6902 for more information.
For example, with the following object file
"compilerOptions": {
"exclude": ["node_modules"],
"lib": ["es2020"]
...
}
...
project.tsconfig.file.patch(JsonPatch.add("/compilerOptions/exclude/-", "coverage"));
project.tsconfig.file.patch(JsonPatch.replace("/compilerOptions/lib", ["dom", "dom.iterable", "esnext"]));
would result in the following object file
"compilerOptions": {
"exclude": ["node_modules", "coverage"],
"lib": ["dom", "dom.iterable", "esnext"]
...
}
...
patchesRequired
- Type: ...JsonPatch[]
The patch operations to apply.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { XmlFile } from 'projen'
XmlFile.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { XmlFile } from 'projen'
XmlFile.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| string | The absolute path of this file. |
| string | The file path, relative to the project's outdir. |
| boolean | Indicates if the file has been changed during synthesis. |
| string | The projen marker, used to identify files as projen-generated. |
| boolean | Indicates if the file should be marked as executable. |
| boolean | Indicates if the file should be read-only or read-write. |
| boolean | Indicates if empty objects and arrays are omitted from the output object. |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
absolutePathRequired
public readonly absolutePath: string;
- Type: string
The absolute path of this file.
pathRequired
public readonly path: string;
- Type: string
The file path, relative to the project's outdir.
changedOptional
public readonly changed: boolean;
- Type: boolean
Indicates if the file has been changed during synthesis.
This property is
only available in postSynthesize() hooks. If this is undefined, the
file has not been synthesized yet.
markerOptional
public readonly marker: string;
- Type: string
The projen marker, used to identify files as projen-generated.
Value is undefined if the project is being ejected.
executableRequired
public readonly executable: boolean;
- Type: boolean
Indicates if the file should be marked as executable.
readonlyRequired
public readonly readonly: boolean;
- Type: boolean
Indicates if the file should be read-only or read-write.
omitEmptyRequired
public readonly omitEmpty: boolean;
- Type: boolean
Indicates if empty objects and arrays are omitted from the output object.
YamlFile
Represents a YAML file.
Initializers
import { YamlFile } from 'projen'
new YamlFile(scope: IConstruct, filePath: string, options: YamlFileOptions)
| Name | Type | Description |
|---|---|---|
| constructs.IConstruct | No description. |
| string | No description. |
| | No description. |
scopeRequired
- Type: constructs.IConstruct
filePathRequired
- Type: string
optionsRequired
- Type: YamlFileOptions
Methods
| Name | Description |
|---|---|
| Returns a string representation of this construct. |
| Called after synthesis. |
| Called before synthesis. |
| Writes the file to the project's output directory. |
| Syntactic sugar for addOverride(path, undefined). |
| Adds an override to the synthesized object file. |
| Adds to an array in the synthesized object file. |
| Applies an RFC 6902 JSON-patch to the synthesized object file. See https://datatracker.ietf.org/doc/html/rfc6902 for more information. |
toString
public toString(): string
Returns a string representation of this construct.
postSynthesize
public postSynthesize(): void
Called after synthesis.
Order is not guaranteed.
preSynthesize
public preSynthesize(): void
Called before synthesis.
synthesize
public synthesize(): void
Writes the file to the project's output directory.
addDeletionOverride
public addDeletionOverride(path: string): void
Syntactic sugar for addOverride(path, undefined).
pathRequired
- Type: string
The path of the value to delete.
addOverride
public addOverride(path: string, value: any): void
Adds an override to the synthesized object file.
If the override is nested, separate each nested level using a dot (.) in the path parameter. If there is an array as part of the nesting, specify the index in the path.
To include a literal . in the property name, prefix with a \. In most
programming languages you will need to write this as "\\." because the
\ itself will need to be escaped.
For example,
project.tsconfig.file.addOverride('compilerOptions.alwaysStrict', true);
project.tsconfig.file.addOverride('compilerOptions.lib', ['dom', 'dom.iterable', 'esnext']);
would add the overrides
"compilerOptions": {
"alwaysStrict": true,
"lib": [
"dom",
"dom.iterable",
"esnext"
]
...
}
...
pathRequired
- Type: string
The path of the property, you can use dot notation to override values in complex types.
Any intermediate keys will be created as needed.
valueRequired
- Type: any
The value.
Could be primitive or complex.
addToArray
public addToArray(path: string, values: ...any[]): void
Adds to an array in the synthesized object file.
If the array is nested, separate each nested level using a dot (.) in the path parameter. If there is an array as part of the nesting, specify the index in the path.
To include a literal . in the property name, prefix with a \. In most
programming languages you will need to write this as "\\." because the
\ itself will need to be escaped.
For example, with the following object file
"compilerOptions": {
"exclude": ["node_modules"],
"lib": ["es2020"]
...
}
...
project.tsconfig.file.addToArray('compilerOptions.exclude', 'coverage');
project.tsconfig.file.addToArray('compilerOptions.lib', 'dom', 'dom.iterable', 'esnext');
would result in the following object file
"compilerOptions": {
"exclude": ["node_modules", "coverage"],
"lib": ["es2020", "dom", "dom.iterable", "esnext"]
...
}
...
pathRequired
- Type: string
The path of the property, you can use dot notation to att to arrays in complex types.
Any intermediate keys will be created as needed.
valuesRequired
- Type: ...any[]
The values to add.
Could be primitive or complex.
patch
public patch(patches: ...JsonPatch[]): void
Applies an RFC 6902 JSON-patch to the synthesized object file. See https://datatracker.ietf.org/doc/html/rfc6902 for more information.
For example, with the following object file
"compilerOptions": {
"exclude": ["node_modules"],
"lib": ["es2020"]
...
}
...
project.tsconfig.file.patch(JsonPatch.add("/compilerOptions/exclude/-", "coverage"));
project.tsconfig.file.patch(JsonPatch.replace("/compilerOptions/lib", ["dom", "dom.iterable", "esnext"]));
would result in the following object file
"compilerOptions": {
"exclude": ["node_modules", "coverage"],
"lib": ["dom", "dom.iterable", "esnext"]
...
}
...
patchesRequired
- Type: ...JsonPatch[]
The patch operations to apply.
Static Functions
| Name | Description |
|---|---|
| Checks if x is a construct. |
| Test whether the given construct is a component. |
isConstruct
import { YamlFile } from 'projen'
YamlFile.isConstruct(x: any)
Checks if x is a construct.
Use this method instead of instanceof to properly detect Construct
instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on
disk are seen as independent, completely different libraries. As a
consequence, the class Construct in each copy of the constructs library
is seen as a different class, and an instance of one class will not test as
instanceof the other class. npm install will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the constructs
library can be accidentally installed, and instanceof will behave
unpredictably. It is safest to avoid using instanceof, and using
this type-testing method instead.
xRequired
- Type: any
Any object.
isComponent
import { YamlFile } from 'projen'
YamlFile.isComponent(x: any)
Test whether the given construct is a component.
xRequired
- Type: any
Properties
| Name | Type | Description |
|---|---|---|
| constructs.Node | The tree node. |
| | No description. |
| string | The absolute path of this file. |
| string | The file path, relative to the project's outdir. |
| boolean | Indicates if the file has been changed during synthesis. |
| string | The projen marker, used to identify files as projen-generated. |
| boolean | Indicates if the file should be marked as executable. |
| boolean | Indicates if the file should be read-only or read-write. |
| boolean | Indicates if empty objects and arrays are omitted from the output object. |
| number | Maximum line width (set to 0 to disable folding). |
nodeRequired
public readonly node: Node;
- Type: constructs.Node
The tree node.
projectRequired
public readonly project: Project;
- Type: Project
absolutePathRequired
public readonly absolutePath: string;
- Type: string
The absolute path of this file.
pathRequired
public readonly path: string;
- Type: string
The file path, relative to the project's outdir.
changedOptional
public readonly changed: boolean;
- Type: boolean
Indicates if the file has been changed during synthesis.
This property is
only available in postSynthesize() hooks. If this is undefined, the
file has not been synthesized yet.
markerOptional
public readonly marker: string;
- Type: string
The projen marker, used to identify files as projen-generated.
Value is undefined if the project is being ejected.
executableRequired
public readonly executable: boolean;
- Type: boolean
Indicates if the file should be marked as executable.
readonlyRequired
public readonly readonly: boolean;
- Type: boolean
Indicates if the file should be read-only or read-write.
omitEmptyRequired
public readonly omitEmpty: boolean;
- Type: boolean
Indicates if empty objects and arrays are omitted from the output object.
lineWidthRequired
public readonly lineWidth: number;
- Type: number
Maximum line width (set to 0 to disable folding).
Structs
AiInstructionsOptions
Options for configuring AI tool instruction files.
Initializer
import { AiInstructionsOptions } from 'projen'
const aiInstructionsOptions: AiInstructionsOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| | Which AI agents to generate instruction files for. |
| {[ key: string ]: string[]} | Per-agent custom instructions. |
| boolean | Include default instructions for projen and general best practices. |
| string[] | General instructions applicable to all agents. |
agentsOptional
public readonly agents: AiAgent[];
- Type: AiAgent[]
- Default: All agents: [AiAgent.GITHUB_COPILOT, AiAgent.CURSOR, AiAgent.CLAUDE, AiAgent.AMAZON_Q]
Which AI agents to generate instruction files for.
agentSpecificInstructionsOptional
public readonly agentSpecificInstructions: {[ key: string ]: string[]};
- Type: {[ key: string ]: string[]}
- Default: no agent specific instructions
Per-agent custom instructions.
Allows different instructions for different AI tools.
Example
{
[AiAgent.GITHUB_COPILOT]: {
instructions: ["Use descriptive commit messages."]
},
[AiAgent.CURSOR]: {
instructions: ["Prefer functional patterns.", "Always add tests."]
}
}
includeDefaultInstructionsOptional
public readonly includeDefaultInstructions: boolean;
- Type: boolean
- Default: true
Include default instructions for projen and general best practices.
Default instructions will only be included for agents provided in the agents option.
If agents is not provided, default instructions will be included for all agents.
instructionsOptional
public readonly instructions: string[];
- Type: string[]
- Default: no agent specific instructions
General instructions applicable to all agents.
CreateProjectOptions
Initializer
import { CreateProjectOptions } from 'projen'
const createProjectOptions: CreateProjectOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string | Directory that the project will be generated in. |
| string | Fully-qualified name of the project type (usually formatted as projen.module.ProjectType). |
| {[ key: string ]: any} | Project options. |
| | Should we render commented-out default options in the projenrc file? |
| boolean | Should we execute post synthesis hooks? |
| boolean | Should we call project.synth() or instantiate the project (could still have side-effects) and render the .projenrc file. |
dirRequired
public readonly dir: string;
- Type: string
Directory that the project will be generated in.
projectFqnRequired
public readonly projectFqn: string;
- Type: string
Fully-qualified name of the project type (usually formatted as projen.module.ProjectType).
Example
`projen.typescript.TypescriptProject`
projectOptionsRequired
public readonly projectOptions: {[ key: string ]: any};
- Type: {[ key: string ]: any}
Project options.
Only JSON-like values can be passed in (strings, booleans, numbers, enums, arrays, and objects that are not derived from classes).
Consult the API reference of the project type you are generating for information about what fields and types are available.
optionHintsOptional
public readonly optionHints: InitProjectOptionHints;
- Type: InitProjectOptionHints
- Default: InitProjectOptionHints.FEATURED
Should we render commented-out default options in the projenrc file?
Does not apply to projenrc.json files.
postOptional
public readonly post: boolean;
- Type: boolean
- Default: true
Should we execute post synthesis hooks?
(usually package manager install).
synthOptional
public readonly synth: boolean;
- Type: boolean
- Default: true
Should we call project.synth() or instantiate the project (could still have side-effects) and render the .projenrc file.
Dependency
Represents a project dependency.
Initializer
import { Dependency } from 'projen'
const dependency: Dependency = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string | The package manager name of the dependency (e.g. leftpad for npm). |
| string | Semantic version version requirement. |
| | Which type of dependency this is (runtime, build-time, etc). |
| {[ key: string ]: any} | Additional JSON metadata associated with the dependency (package manager specific). |
nameRequired
public readonly name: string;
- Type: string
The package manager name of the dependency (e.g. leftpad for npm).
NOTE: For package managers that use complex coordinates (like Maven), we will codify it into a string somehow.
versionOptional
public readonly version: string;
- Type: string
- Default: requirement is managed by the package manager (e.g. npm/yarn).
Semantic version version requirement.
typeRequired
public readonly type: DependencyType;
- Type: DependencyType
Which type of dependency this is (runtime, build-time, etc).
metadataOptional
public readonly metadata: {[ key: string ]: any};
- Type: {[ key: string ]: any}
- Default: {}
Additional JSON metadata associated with the dependency (package manager specific).
DependencyCoordinates
Coordinates of the dependency (name and version).
Initializer
import { DependencyCoordinates } from 'projen'
const dependencyCoordinates: DependencyCoordinates = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string | The package manager name of the dependency (e.g. leftpad for npm). |
| string | Semantic version version requirement. |
nameRequired
public readonly name: string;
- Type: string
The package manager name of the dependency (e.g. leftpad for npm).
NOTE: For package managers that use complex coordinates (like Maven), we will codify it into a string somehow.
versionOptional
public readonly version: string;
- Type: string
- Default: requirement is managed by the package manager (e.g. npm/yarn).
Semantic version version requirement.
DepsManifest
Initializer
import { DepsManifest } from 'projen'
const depsManifest: DepsManifest = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| | All dependencies of this module. |
dependenciesRequired
public readonly dependencies: Dependency[];
- Type: Dependency[]
All dependencies of this module.
DevEnvironmentOptions
Base options for configuring a container-based development environment.
Initializer
import { DevEnvironmentOptions } from 'projen'
const devEnvironmentOptions: DevEnvironmentOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| | A Docker image or Dockerfile for the container. |
| string[] | An array of ports that should be exposed from the container. |
| | An array of tasks that should be run when the container starts. |
| string[] | An array of extension IDs that specify the extensions that should be installed inside the container when it is created. |
dockerImageOptional
public readonly dockerImage: DevEnvironmentDockerImage;
A Docker image or Dockerfile for the container.
portsOptional
public readonly ports: string[];
- Type: string[]
An array of ports that should be exposed from the container.
tasksOptional
public readonly tasks: Task[];
- Type: Task[]
An array of tasks that should be run when the container starts.
vscodeExtensionsOptional
public readonly vscodeExtensions: string[];
- Type: string[]
An array of extension IDs that specify the extensions that should be installed inside the container when it is created.
DockerComposeBuild
Build arguments for creating a docker image.
Initializer
import { DockerComposeBuild } from 'projen'
const dockerComposeBuild: DockerComposeBuild = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string | Docker build context directory. |
| {[ key: string ]: string} | Build args. |
| string | A dockerfile to build from. |
contextRequired
public readonly context: string;
- Type: string
Docker build context directory.
argsOptional
public readonly args: {[ key: string ]: string};
- Type: {[ key: string ]: string}
- Default: none are provided
Build args.
dockerfileOptional
public readonly dockerfile: string;
- Type: string
- Default: "Dockerfile"
A dockerfile to build from.
DockerComposeNetworkConfig
Network configuration.
Initializer
import { DockerComposeNetworkConfig } from 'projen'
const dockerComposeNetworkConfig: DockerComposeNetworkConfig = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| boolean | Set to true to indicate that standalone containers can attach to this network, in addition to services. |
| boolean | Set to true to indicate that the network is a bridge network. |
| string | Driver to use for the network. |
| object | Options for the configured driver. |
| boolean | Set to true to indicate that the network is externally created. |
| boolean | Set to true to indicate that you want to create an externally isolated overlay network. |
| | Specify custom IPAM config. |
| string[] | Attach labels to the network. |
| string | Name of the network for when the network name isn't going to work in YAML. |
| boolean | Set to true to indicate that the network is an overlay network. |
attachableOptional
public readonly attachable: boolean;
- Type: boolean
- Default: unset
Set to true to indicate that standalone containers can attach to this network, in addition to services.
bridgeOptional
public readonly bridge: boolean;
- Type: boolean
- Default: unset
Set to true to indicate that the network is a bridge network.
driverOptional
public readonly driver: string;
- Type: string
- Default: value is not provided
Driver to use for the network.
driverOptsOptional
public readonly driverOpts: object;
- Type: object
- Default: value is not provided
Options for the configured driver.
Those options are driver-dependent - consult the driver’s documentation for more information
externalOptional
public readonly external: boolean;
- Type: boolean
- Default: unset, indicating that docker-compose creates the network
Set to true to indicate that the network is externally created.
internalOptional
public readonly internal: boolean;
- Type: boolean
- Default: unset
Set to true to indicate that you want to create an externally isolated overlay network.
ipamOptional
public readonly ipam: DockerComposeNetworkIpamConfig;
- Type: DockerComposeNetworkIpamConfig
- Default: unset
Specify custom IPAM config.
labelsOptional
public readonly labels: string[];
- Type: string[]
- Default: unset
Attach labels to the network.
nameOptional
public readonly name: string;
- Type: string
- Default: unset, indicating that docker-compose creates networks as usual
Name of the network for when the network name isn't going to work in YAML.
overlayOptional
public readonly overlay: boolean;
- Type: boolean
- Default: unset
Set to true to indicate that the network is an overlay network.
DockerComposeNetworkIpamConfig
IPAM configuration.
Initializer
import { DockerComposeNetworkIpamConfig } from 'projen'
const dockerComposeNetworkIpamConfig: DockerComposeNetworkIpamConfig = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| | A list with zero or more config blocks specifying custom IPAM configuration. |
| string | Driver to use for custom IPAM config. |
configOptional
public readonly config: DockerComposeNetworkIpamSubnetConfig[];
- Type: DockerComposeNetworkIpamSubnetConfig[]
- Default: value is not provided
A list with zero or more config blocks specifying custom IPAM configuration.
driverOptional
public readonly driver: string;
- Type: string
- Default: value is not provided
Driver to use for custom IPAM config.
DockerComposeNetworkIpamSubnetConfig
IPAM subnet configuration.
Initializer
import { DockerComposeNetworkIpamSubnetConfig } from 'projen'
const dockerComposeNetworkIpamSubnetConfig: DockerComposeNetworkIpamSubnetConfig = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string | Subnet in CIDR format that represents a network segment. |
subnetOptional
public readonly subnet: string;
- Type: string
- Default: value is not provided
Subnet in CIDR format that represents a network segment.
DockerComposePortMappingOptions
Options for port mappings.
Initializer
import { DockerComposePortMappingOptions } from 'projen'
const dockerComposePortMappingOptions: DockerComposePortMappingOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| | Port mapping protocol. |
protocolOptional
public readonly protocol: DockerComposeProtocol;
- Type: DockerComposeProtocol
- Default: DockerComposeProtocol.TCP
Port mapping protocol.
DockerComposeProps
Props for DockerCompose.
Initializer
import { DockerComposeProps } from 'projen'
const dockerComposeProps: DockerComposeProps = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string | A name to add to the docker-compose.yml filename. |
| string | Docker Compose schema version do be used. |
| | Service descriptions. |
nameSuffixOptional
public readonly nameSuffix: string;
- Type: string
- Default: no name is added
A name to add to the docker-compose.yml filename.
Example
'myname' yields 'docker-compose.myname.yml'
schemaVersionOptional
schemaVersion- Deprecated: - The top level
versionfield is obsolete per the Compose Specification. {@link https://github.com/compose-spec/compose-spec/blob/master/spec.md#version-and-name-top-level-elements Compose Specification}
public readonly schemaVersion: string;
- Type: string
- Default: no version is provided
Docker Compose schema version do be used.
servicesOptional
public readonly services: {[ key: string ]: DockerComposeServiceDescription};
- Type: {[ key: string ]: DockerComposeServiceDescription}
Service descriptions.
DockerComposeServiceDescription
Description of a docker-compose.yml service.
Initializer
import { DockerComposeServiceDescription } from 'projen'
const dockerComposeServiceDescription: DockerComposeServiceDescription = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string[] | Provide a command to the docker container. |
| | Names of other services this service depends on. |
| string[] | Entrypoint to run in the container. |
| {[ key: string ]: string} | Add environment variables. |
| string | Use a docker image. |
| | Build a docker image. |
| {[ key: string ]: string} | Add labels. |
| | Add some networks to the service. |
| string | Add platform. |
| | Map some ports. |
| boolean | Run in privileged mode. |
| | Mount some volumes into the service. |
commandOptional
public readonly command: string[];
- Type: string[]
- Default: use the container's default command
Provide a command to the docker container.
dependsOnOptional
public readonly dependsOn: IDockerComposeServiceName[];
- Type: IDockerComposeServiceName[]
- Default: no dependencies
Names of other services this service depends on.
entrypointOptional
public readonly entrypoint: string[];
- Type: string[]
Entrypoint to run in the container.
environmentOptional
public readonly environment: {[ key: string ]: string};
- Type: {[ key: string ]: string}
- Default: no environment variables are provided
Add environment variables.
imageOptional
public readonly image: string;
- Type: string
Use a docker image.
Note: You must specify either build or image key.
imageBuildOptional
public readonly imageBuild: DockerComposeBuild;
- Type: DockerComposeBuild
Build a docker image.
Note: You must specify either imageBuild or image key.
labelsOptional
public readonly labels: {[ key: string ]: string};
- Type: {[ key: string ]: string}
- Default: no labels are provided
Add labels.
networksOptional
public readonly networks: IDockerComposeNetworkBinding[];
- Type: IDockerComposeNetworkBinding[]
Add some networks to the service.
[DockerCompose.network () to create & mount a named network](DockerCompose.network () to create & mount a named network)
platformOptional
public readonly platform: string;
- Type: string
- Default: no platform is provided
Add platform.
portsOptional
public readonly ports: DockerComposeServicePort[];
- Type: DockerComposeServicePort[]
- Default: no ports are mapped
Map some ports.
privilegedOptional
public readonly privileged: boolean;
- Type: boolean
- Default: no privileged mode flag is provided
Run in privileged mode.
volumesOptional
public readonly volumes: IDockerComposeVolumeBinding[];
- Type: IDockerComposeVolumeBinding[]
Mount some volumes into the service.
Use one of the following to create volumes:
[DockerCompose.namedVolume () to create & mount a named volume](DockerCompose.namedVolume () to create & mount a named volume)
DockerComposeServicePort
A service port mapping.
Initializer
import { DockerComposeServicePort } from 'projen'
const dockerComposeServicePort: DockerComposeServicePort = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string | Port mapping mode. |
| | Network protocol. |
| number | Published port number. |
| number | Target port number. |
modeRequired
public readonly mode: string;
- Type: string
Port mapping mode.
protocolRequired
public readonly protocol: DockerComposeProtocol;
- Type: DockerComposeProtocol
Network protocol.
publishedRequired
public readonly published: number;
- Type: number
Published port number.
targetRequired
public readonly target: number;
- Type: number
Target port number.
DockerComposeVolumeConfig
Volume configuration.
Initializer
import { DockerComposeVolumeConfig } from 'projen'
const dockerComposeVolumeConfig: DockerComposeVolumeConfig = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string | Driver to use for the volume. |
| {[ key: string ]: string} | Options to provide to the driver. |
| boolean | Set to true to indicate that the volume is externally created. |
| string | Name of the volume for when the volume name isn't going to work in YAML. |
driverOptional
public readonly driver: string;
- Type: string
- Default: value is not provided
Driver to use for the volume.
driverOptsOptional
public readonly driverOpts: {[ key: string ]: string};
- Type: {[ key: string ]: string}
Options to provide to the driver.
externalOptional
public readonly external: boolean;
- Type: boolean
- Default: unset, indicating that docker-compose creates the volume
Set to true to indicate that the volume is externally created.
nameOptional
public readonly name: string;
- Type: string
- Default: unset, indicating that docker-compose creates volumes as usual
Name of the volume for when the volume name isn't going to work in YAML.
DockerComposeVolumeMount
Service volume mounting information.
Initializer
import { DockerComposeVolumeMount } from 'projen'
const dockerComposeVolumeMount: DockerComposeVolumeMount = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string | Volume source. |
| string | Volume target. |
| string | Type of volume. |
sourceRequired
public readonly source: string;
- Type: string
Volume source.
targetRequired
public readonly target: string;
- Type: string
Volume target.
typeRequired
public readonly type: string;
- Type: string
Type of volume.
FileBaseOptions
Initializer
import { FileBaseOptions } from 'projen'
const fileBaseOptions: FileBaseOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| boolean | Indicates whether this file should be committed to git or ignored. |
| boolean | Update the project's .gitignore file. |
| boolean | Whether the generated file should be marked as executable. |
| boolean | Adds the projen marker to the file. |
| boolean | Whether the generated file should be readonly. |
committedOptional
public readonly committed: boolean;
- Type: boolean
- Default: true
Indicates whether this file should be committed to git or ignored.
By default, all generated files are committed and anti-tamper is used to protect against manual modifications.
editGitignoreOptional
public readonly editGitignore: boolean;
- Type: boolean
- Default: true
Update the project's .gitignore file.
executableOptional
public readonly executable: boolean;
- Type: boolean
- Default: false
Whether the generated file should be marked as executable.
markerOptional
public readonly marker: boolean;
- Type: boolean
- Default: marker will be included as long as the project is not ejected
Adds the projen marker to the file.
readonlyOptional
public readonly readonly: boolean;
- Type: boolean
- Default: true
Whether the generated file should be readonly.
GitAttributesFileOptions
Options for GitAttributesFile.
Initializer
import { GitAttributesFileOptions } from 'projen'
const gitAttributesFileOptions: GitAttributesFileOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| | The default end of line character for text files. |
endOfLineOptional
public readonly endOfLine: EndOfLine;
- Type: EndOfLine
- Default: EndOfLine.LF
The default end of line character for text files.
endOfLine it's useful to keep the same end of line between Windows and Unix operative systems for git checking/checkout operations. Hence, it can avoid simple repository mutations consisting only of changes in the end of line characters. It will be set in the first line of the .gitattributes file to make it the first match with high priority but it can be overriden in a later line. Can be disabled by setting explicitly: { endOfLine: EndOfLine.NONE }.
GitOptions
Git configuration options.
Initializer
import { GitOptions } from 'projen'
const gitOptions: GitOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| | The default end of line character for text files. |
| string[] | File patterns to mark as stored in Git LFS. |
endOfLineOptional
public readonly endOfLine: EndOfLine;
- Type: EndOfLine
- Default: EndOfLine.LF
The default end of line character for text files.
endOfLine it's useful to keep the same end of line between Windows and Unix operative systems for git checking/checkout operations.
Hence, it can avoid simple repository mutations consisting only of changes in the end of line characters.
It will be set in the first line of the .gitattributes file to make it the first match with high priority but it can be overriden in a later line.
Can be disabled by setting: endOfLine: EndOfLine.NONE.
lfsPatternsOptional
public readonly lfsPatterns: string[];
- Type: string[]
- Default: No files stored in LFS
File patterns to mark as stored in Git LFS.
GitpodOptions
Constructor options for the Gitpod component.
By default, Gitpod uses the 'gitpod/workspace-full' docker image.
[https://github.com/gitpod-io/workspace-images/blob/master/full/Dockerfile
By default, all tasks will be run in parallel. To run the tasks in sequence, create a new task and specify the other tasks as subtasks.](https://github.com/gitpod-io/workspace-images/blob/master/full/Dockerfile
By default, all tasks will be run in parallel. To run the tasks in sequence, create a new task and specify the other tasks as subtasks.)
Initializer
import { GitpodOptions } from 'projen'
const gitpodOptions: GitpodOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| | A Docker image or Dockerfile for the container. |
| string[] | An array of ports that should be exposed from the container. |
| | An array of tasks that should be run when the container starts. |
| string[] | An array of extension IDs that specify the extensions that should be installed inside the container when it is created. |
| | Optional Gitpod's Github App integration for prebuilds If this is not set and Gitpod's Github App is installed, then Gitpod will apply these defaults: https://www.gitpod.io/docs/prebuilds/#configure-the-github-app. |
dockerImageOptional
public readonly dockerImage: DevEnvironmentDockerImage;
A Docker image or Dockerfile for the container.
portsOptional
public readonly ports: string[];
- Type: string[]
An array of ports that should be exposed from the container.
tasksOptional
public readonly tasks: Task[];
- Type: Task[]
An array of tasks that should be run when the container starts.
vscodeExtensionsOptional
public readonly vscodeExtensions: string[];
- Type: string[]
An array of extension IDs that specify the extensions that should be installed inside the container when it is created.
prebuildsOptional
public readonly prebuilds: GitpodPrebuilds;
- Type: GitpodPrebuilds
- Default: undefined
Optional Gitpod's Github App integration for prebuilds If this is not set and Gitpod's Github App is installed, then Gitpod will apply these defaults: https://www.gitpod.io/docs/prebuilds/#configure-the-github-app.
GitpodPort
Options for an exposed port on Gitpod.
Initializer
import { GitpodPort } from 'projen'
const gitpodPort: GitpodPort = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| | What to do when a service on a port is detected. |
| string | A port that should be exposed (forwarded) from the container. |
| | Whether the port visibility should be private or public. |
onOpenOptional
public readonly onOpen: GitpodOnOpen;
- Type: GitpodOnOpen
- Default: GitpodOnOpen.NOTIFY
What to do when a service on a port is detected.
portOptional
public readonly port: string;
- Type: string
A port that should be exposed (forwarded) from the container.
Example
"8080"
visibilityOptional
public readonly visibility: GitpodPortVisibility;
- Type: GitpodPortVisibility
- Default: GitpodPortVisibility.PUBLIC
Whether the port visibility should be private or public.
GitpodPrebuilds
Configure the Gitpod App for prebuilds.
Currently only GitHub is supported.
Initializer
import { GitpodPrebuilds } from 'projen'
const gitpodPrebuilds: GitpodPrebuilds = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| boolean | Add a "Review in Gitpod" button to the pull request's description. |
| boolean | Add a check to pull requests. |
| boolean | Add a "Review in Gitpod" button as a comment to pull requests. |
| boolean | Add a label once the prebuild is ready to pull requests. |
| boolean | Enable for all branches in this repo. |
| boolean | Enable for the master/default branch. |
| boolean | Enable for pull requests coming from this repo. |
| boolean | Enable for pull requests coming from forks. |
addBadgeOptional
public readonly addBadge: boolean;
- Type: boolean
- Default: false
Add a "Review in Gitpod" button to the pull request's description.
addCheckOptional
public readonly addCheck: boolean;
- Type: boolean
- Default: true
Add a check to pull requests.
addCommentOptional
public readonly addComment: boolean;
- Type: boolean
- Default: false
Add a "Review in Gitpod" button as a comment to pull requests.
addLabelOptional
public readonly addLabel: boolean;
- Type: boolean
- Default: false
Add a label once the prebuild is ready to pull requests.
branchesOptional
public readonly branches: boolean;
- Type: boolean
- Default: false
Enable for all branches in this repo.
masterOptional
public readonly master: boolean;
- Type: boolean
- Default: true
Enable for the master/default branch.
pullRequestsOptional
public readonly pullRequests: boolean;
- Type: boolean
- Default: true
Enable for pull requests coming from this repo.
pullRequestsFromForksOptional
public readonly pullRequestsFromForks: boolean;
- Type: boolean
- Default: false
Enable for pull requests coming from forks.
GitpodTask
Configure options for a task to be run when opening a Gitpod workspace (e.g. running tests, or starting a dev server).
Start Mode | Execution Fresh Workspace | before && init && command Restart Workspace | before && command Snapshot | before && command Prebuild | before && init && prebuild
Initializer
import { GitpodTask } from 'projen'
const gitpodTask: GitpodTask = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string | Required. |
| string | In case you need to run something even before init, that is a requirement for both init and command, you can use the before property. |
| string | The init property can be used to specify shell commands that should only be executed after a workspace was freshly cloned and needs to be initialized somehow. |
| string | A name for this task. |
| | You can configure where in the IDE the terminal should be opened. |
| | You can configure how the terminal should be opened relative to the previous task. |
| string | The optional prebuild command will be executed during prebuilds. |
commandRequired
public readonly command: string;
- Type: string
Required.
The shell command to run
beforeOptional
public readonly before: string;
- Type: string
In case you need to run something even before init, that is a requirement for both init and command, you can use the before property.
initOptional
public readonly init: string;
- Type: string
The init property can be used to specify shell commands that should only be executed after a workspace was freshly cloned and needs to be initialized somehow.
Such tasks are usually builds or downloading dependencies. Anything you only want to do once but not when you restart a workspace or start a snapshot.
nameOptional
public readonly name: string;
- Type: string
- Default: task names are omitted when blank
A name for this task.
openInOptional
public readonly openIn: GitpodOpenIn;
- Type: GitpodOpenIn
- Default: GitpodOpenIn.BOTTOM
You can configure where in the IDE the terminal should be opened.
openModeOptional
public readonly openMode: GitpodOpenMode;
- Type: GitpodOpenMode
- Default: GitpodOpenMode.TAB_AFTER
You can configure how the terminal should be opened relative to the previous task.
prebuildOptional
public readonly prebuild: string;
- Type: string
The optional prebuild command will be executed during prebuilds.
It is meant to run additional long running processes that could be useful, e.g. running test suites.
GroupRunnerOptions
Initializer
import { GroupRunnerOptions } from 'projen'
const groupRunnerOptions: GroupRunnerOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string | No description. |
| string[] | No description. |
groupRequired
public readonly group: string;
- Type: string
labelsOptional
public readonly labels: string[];
- Type: string[]
IgnoreFileOptions
Initializer
import { IgnoreFileOptions } from 'projen'
const ignoreFileOptions: IgnoreFileOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| boolean | Filter out comment lines? |
| boolean | Filter out blank/empty lines? |
| string[] | Patterns to add to the ignore file. |
filterCommentLinesOptional
public readonly filterCommentLines: boolean;
- Type: boolean
- Default: true
Filter out comment lines?
filterEmptyLinesOptional
public readonly filterEmptyLines: boolean;
- Type: boolean
- Default: true
Filter out blank/empty lines?
ignorePatternsOptional
public readonly ignorePatterns: string[];
- Type: string[]
- Default: []
Patterns to add to the ignore file.
IniFileOptions
Options for IniFile.
Initializer
import { IniFileOptions } from 'projen'
const iniFileOptions: IniFileOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| boolean | Indicates whether this file should be committed to git or ignored. |
| boolean | Update the project's .gitignore file. |
| boolean | Whether the generated file should be marked as executable. |
| boolean | Adds the projen marker to the file. |
| boolean | Whether the generated file should be readonly. |
| any | The object that will be serialized. You can modify the object's contents before synthesis. |
| boolean | Omits empty objects and arrays. |
committedOptional
public readonly committed: boolean;
- Type: boolean
- Default: true
Indicates whether this file should be committed to git or ignored.
By default, all generated files are committed and anti-tamper is used to protect against manual modifications.
editGitignoreOptional
public readonly editGitignore: boolean;
- Type: boolean
- Default: true
Update the project's .gitignore file.
executableOptional
public readonly executable: boolean;
- Type: boolean
- Default: false
Whether the generated file should be marked as executable.
markerOptional
public readonly marker: boolean;
- Type: boolean
- Default: marker will be included as long as the project is not ejected
Adds the projen marker to the file.
readonlyOptional
public readonly readonly: boolean;
- Type: boolean
- Default: true
Whether the generated file should be readonly.
objOptional
public readonly obj: any;
- Type: any
- Default: {} an empty object (use
file.objto mutate).
The object that will be serialized. You can modify the object's contents before synthesis.
Serialization of the object is similar to JSON.stringify with few enhancements:
- values that are functions will be called during synthesis and the result will be serialized - this allow to have lazy values.
Setwill be converted to arrayMapwill be converted to a plain object ({ key: value, ... }})RegExpwithout flags will be converted to string representation of the source
omitEmptyOptional
public readonly omitEmpty: boolean;
- Type: boolean
- Default: false
Omits empty objects and arrays.
InitProject
Information passed from projen new to the project object when the project is first created.
It is used to generate projenrc files in various languages.
Initializer
import { InitProject } from 'projen'
const initProject: InitProject = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| {[ key: string ]: any} | Initial arguments passed to projen new. |
| | Include commented out options. |
| string | The JSII FQN of the project type. |
| | Project metadata. |
argsRequired
public readonly args: {[ key: string ]: any};
- Type: {[ key: string ]: any}
Initial arguments passed to projen new.
commentsRequired
public readonly comments: InitProjectOptionHints;
- Type: InitProjectOptionHints
- Default: InitProjectOptionHints.FEATURED
Include commented out options.
Does not apply to projenrc.json files.
fqnRequired
public readonly fqn: string;
- Type: string
The JSII FQN of the project type.
typeRequired
public readonly type: ProjectType;
- Type: ProjectType
Project metadata.
JsonFileOptions
Options for JsonFile.
Initializer
import { JsonFileOptions } from 'projen'
const jsonFileOptions: JsonFileOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| boolean | Indicates whether this file should be committed to git or ignored. |
| boolean | Update the project's .gitignore file. |
| boolean | Whether the generated file should be marked as executable. |
| boolean | Adds the projen marker to the file. |
| boolean | Whether the generated file should be readonly. |
| any | The object that will be serialized. You can modify the object's contents before synthesis. |
| boolean | Omits empty objects and arrays. |
| boolean | Allow the use of comments in this file. |
| boolean | Adds a newline at the end of the file. |
committedOptional
public readonly committed: boolean;
- Type: boolean
- Default: true
Indicates whether this file should be committed to git or ignored.
By default, all generated files are committed and anti-tamper is used to protect against manual modifications.
editGitignoreOptional
public readonly editGitignore: boolean;
- Type: boolean
- Default: true
Update the project's .gitignore file.
executableOptional
public readonly executable: boolean;
- Type: boolean
- Default: false
Whether the generated file should be marked as executable.
markerOptional
public readonly marker: boolean;
- Type: boolean
- Default: marker will be included as long as the project is not ejected
Adds the projen marker to the file.
readonlyOptional
public readonly readonly: boolean;
- Type: boolean
- Default: true
Whether the generated file should be readonly.
objOptional
public readonly obj: any;
- Type: any
- Default: {} an empty object (use
file.objto mutate).
The object that will be serialized. You can modify the object's contents before synthesis.
Serialization of the object is similar to JSON.stringify with few enhancements:
- values that are functions will be called during synthesis and the result will be serialized - this allow to have lazy values.
Setwill be converted to arrayMapwill be converted to a plain object ({ key: value, ... }})RegExpwithout flags will be converted to string representation of the source
omitEmptyOptional
public readonly omitEmpty: boolean;
- Type: boolean
- Default: false
Omits empty objects and arrays.
allowCommentsOptional
public readonly allowComments: boolean;
- Type: boolean
- Default: false for .json files, true for .json5 and .jsonc files
Allow the use of comments in this file.
newlineOptional
public readonly newline: boolean;
- Type: boolean
- Default: true
Adds a newline at the end of the file.
LicenseOptions
Initializer
import { LicenseOptions } from 'projen'
const licenseOptions: LicenseOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string | License type (SPDX). |
| string | Copyright owner. |
| string | Period of license (e.g. "1998-2023"). |
spdxRequired
public readonly spdx: string;
- Type: string
License type (SPDX).
[https://github.com/projen/projen/tree/main/license-text for list of supported licenses](https://github.com/projen/projen/tree/main/license-text for list of supported licenses)
copyrightOwnerOptional
public readonly copyrightOwner: string;
- Type: string
- Default:
Copyright owner.
If the license text has $copyright_owner, this option must be specified.
copyrightPeriodOptional
public readonly copyrightPeriod: string;
- Type: string
- Default: current year (e.g. "2020")
Period of license (e.g. "1998-2023").
The string $copyright_period will be substituted with this string.
LoggerOptions
Options for logging utilities.
Initializer
import { LoggerOptions } from 'projen'
const loggerOptions: LoggerOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| | The logging verbosity. |
| boolean | Include a prefix for all logging messages with the project name. |
levelOptional
public readonly level: LogLevel;
- Type: LogLevel
- Default: LogLevel.INFO
The logging verbosity.
The levels available (in increasing verbosity) are OFF, ERROR, WARN, INFO, DEBUG, and VERBOSE.
usePrefixOptional
public readonly usePrefix: boolean;
- Type: boolean
- Default: false
Include a prefix for all logging messages with the project name.
MakefileOptions
Options for Makefiles.
Initializer
import { MakefileOptions } from 'projen'
const makefileOptions: MakefileOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| boolean | Indicates whether this file should be committed to git or ignored. |
| boolean | Update the project's .gitignore file. |
| boolean | Whether the generated file should be marked as executable. |
| boolean | Adds the projen marker to the file. |
| boolean | Whether the generated file should be readonly. |
| string[] | List of targets to build when Make is invoked without specifying any targets. |
| | Rules to include in the Makefile. |
committedOptional
public readonly committed: boolean;
- Type: boolean
- Default: true
Indicates whether this file should be committed to git or ignored.
By default, all generated files are committed and anti-tamper is used to protect against manual modifications.
editGitignoreOptional
public readonly editGitignore: boolean;
- Type: boolean
- Default: true
Update the project's .gitignore file.
executableOptional
public readonly executable: boolean;
- Type: boolean
- Default: false
Whether the generated file should be marked as executable.
markerOptional
public readonly marker: boolean;
- Type: boolean
- Default: marker will be included as long as the project is not ejected
Adds the projen marker to the file.
readonlyOptional
public readonly readonly: boolean;
- Type: boolean
- Default: true
Whether the generated file should be readonly.
allOptional
public readonly all: string[];
- Type: string[]
- Default: []
List of targets to build when Make is invoked without specifying any targets.
rulesOptional
public readonly rules: Rule[];
- Type: Rule[]
- Default: []
Rules to include in the Makefile.
ObjectFileOptions
Options for ObjectFile.
Initializer
import { ObjectFileOptions } from 'projen'
const objectFileOptions: ObjectFileOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| boolean | Indicates whether this file should be committed to git or ignored. |
| boolean | Update the project's .gitignore file. |
| boolean | Whether the generated file should be marked as executable. |
| boolean | Adds the projen marker to the file. |
| boolean | Whether the generated file should be readonly. |
| any | The object that will be serialized. You can modify the object's contents before synthesis. |
| boolean | Omits empty objects and arrays. |
committedOptional
public readonly committed: boolean;
- Type: boolean
- Default: true
Indicates whether this file should be committed to git or ignored.
By default, all generated files are committed and anti-tamper is used to protect against manual modifications.
editGitignoreOptional
public readonly editGitignore: boolean;
- Type: boolean
- Default: true
Update the project's .gitignore file.
executableOptional
public readonly executable: boolean;
- Type: boolean
- Default: false
Whether the generated file should be marked as executable.
markerOptional
public readonly marker: boolean;
- Type: boolean
- Default: marker will be included as long as the project is not ejected
Adds the projen marker to the file.
readonlyOptional
public readonly readonly: boolean;
- Type: boolean
- Default: true
Whether the generated file should be readonly.
objOptional
public readonly obj: any;
- Type: any
- Default: {} an empty object (use
file.objto mutate).
The object that will be serialized. You can modify the object's contents before synthesis.
Serialization of the object is similar to JSON.stringify with few enhancements:
- values that are functions will be called during synthesis and the result will be serialized - this allow to have lazy values.
Setwill be converted to arrayMapwill be converted to a plain object ({ key: value, ... }})RegExpwithout flags will be converted to string representation of the source
omitEmptyOptional
public readonly omitEmpty: boolean;
- Type: boolean
- Default: false
Omits empty objects and arrays.
ProjectOptions
Options for Project.
Initializer
import { ProjectOptions } from 'projen'
const projectOptions: ProjectOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string | This is the name of your project. |
| boolean | Whether to commit the managed files by default. |
| | Configuration options for .gitignore file. |
| | Configuration options for git. |
| | Configure logging options such as verbosity. |
| string | The root directory of the project. |
| | The parent project, if this project is part of a bigger project. |
| string | The shell command to use in order to run the projen CLI. |
| boolean | Generate (once) .projenrc.json (in JSON). Set to false in order to disable .projenrc.json generation. |
| | Options for .projenrc.json. |
| boolean | Use renovatebot to handle dependency upgrades. |
| | Options for renovatebot. |
nameRequired
public readonly name: string;
- Type: string
- Default: $BASEDIR
This is the name of your project.
commitGeneratedOptional
public readonly commitGenerated: boolean;
- Type: boolean
- Default: true
Whether to commit the managed files by default.
gitIgnoreOptionsOptional
public readonly gitIgnoreOptions: IgnoreFileOptions;
- Type: IgnoreFileOptions
Configuration options for .gitignore file.
gitOptionsOptional
public readonly gitOptions: GitOptions;
- Type: GitOptions
Configuration options for git.
loggingOptional
public readonly logging: LoggerOptions;
- Type: LoggerOptions
- Default: {}
Configure logging options such as verbosity.
outdirOptional
public readonly outdir: string;
- Type: string
- Default: "."
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.
parentOptional
public readonly parent: Project;
- Type: Project
The parent project, if this project is part of a bigger project.
projenCommandOptional
public readonly projenCommand: string;
- Type: string
- Default: "npx projen"
The shell command to use in order to run the projen CLI.
Can be used to customize in special environments.
projenrcJsonOptional
public readonly projenrcJson: boolean;
- Type: boolean
- Default: false
Generate (once) .projenrc.json (in JSON). Set to false in order to disable .projenrc.json generation.
projenrcJsonOptionsOptional
public readonly projenrcJsonOptions: ProjenrcJsonOptions;
- Type: ProjenrcJsonOptions
- Default: default options
Options for .projenrc.json.
renovatebotOptional
public readonly renovatebot: boolean;
- Type: boolean
- Default: false
Use renovatebot to handle dependency upgrades.
renovatebotOptionsOptional
public readonly renovatebotOptions: RenovatebotOptions;
- Type: RenovatebotOptions
- Default: default options
Options for renovatebot.
ProjenrcJsonOptions
Initializer
import { ProjenrcJsonOptions } from 'projen'
const projenrcJsonOptions: ProjenrcJsonOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string | The name of the projenrc file. |
filenameOptional
public readonly filename: string;
- Type: string
- Default: ".projenrc.json"
The name of the projenrc file.
ProjenrcOptions
Initializer
import { ProjenrcOptions } from 'projen'
const projenrcOptions: ProjenrcOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string | The name of the projenrc file. |
filenameOptional
filename- Deprecated: use
ProjenrcJsonOptions
public readonly filename: string;
- Type: string
- Default: ".projenrc.json"
The name of the projenrc file.
RenovatebotOptions
Options for Renovatebot.
Initializer
import { RenovatebotOptions } from 'projen'
const renovatebotOptions: RenovatebotOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string[] | You can use the ignore option to customize which dependencies are updated. |
| boolean | Ignores updates to projen. |
| string[] | List of labels to apply to the created PR's. |
| boolean | No description. |
| any | No description. |
| string[] | How often to check for new versions and raise pull requests. |
ignoreOptional
public readonly ignore: string[];
- Type: string[]
- Default: []
You can use the ignore option to customize which dependencies are updated.
The ignore option supports just package name.
ignoreProjenOptional
public readonly ignoreProjen: boolean;
- Type: boolean
- Default: true
Ignores updates to projen.
This is required since projen updates may cause changes in committed files and anti-tamper checks will fail.
Projen upgrades are covered through the ProjenUpgrade class.
labelsOptional
public readonly labels: string[];
- Type: string[]
List of labels to apply to the created PR's.
markerOptional
public readonly marker: boolean;
- Type: boolean
overrideConfigOptional
public readonly overrideConfig: any;
- Type: any
scheduleIntervalOptional
public readonly scheduleInterval: string[];
- Type: string[]
- Default: ["at any time"]
How often to check for new versions and raise pull requests.
Can be given in CRON or LATER format, and use multiple schedules (e.g. different for weekdays and weekends). Multiple rules are handles as OR.
Some normal scheduling values defined in enum RenovatebotScheduleInterval.
https://docs.renovatebot.com/configuration-options/#schedule
ResolveOptions
Resolve options.
Initializer
import { ResolveOptions } from 'projen'
const resolveOptions: ResolveOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| any[] | Context arguments. |
| boolean | Omits empty arrays and objects. |
argsOptional
public readonly args: any[];
- Type: any[]
- Default: []
Context arguments.
omitEmptyOptional
public readonly omitEmpty: boolean;
- Type: boolean
- Default: false
Omits empty arrays and objects.
Rule
A Make rule.
Initializer
import { Rule } from 'projen'
const rule: Rule = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string[] | Files to be created or updated by this rule. |
| boolean | Marks whether the target is phony. |
| string[] | Files that are used as inputs to create a target. |
| string[] | Commands that are run (using prerequisites as inputs) to create a target. |
targetsRequired
public readonly targets: string[];
- Type: string[]
Files to be created or updated by this rule.
If the rule is phony then instead this represents the command's name(s).
phonyOptional
public readonly phony: boolean;
- Type: boolean
- Default: false
Marks whether the target is phony.
prerequisitesOptional
public readonly prerequisites: string[];
- Type: string[]
- Default: []
Files that are used as inputs to create a target.
recipeOptional
public readonly recipe: string[];
- Type: string[]
- Default: []
Commands that are run (using prerequisites as inputs) to create a target.
SampleDirOptions
SampleDir options.
Initializer
import { SampleDirOptions } from 'projen'
const sampleDirOptions: SampleDirOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| {[ key: string ]: string} | The files to render into the directory. |
| string | Absolute path to a directory to copy files from (does not need to be text files). |
filesOptional
public readonly files: {[ key: string ]: string};
- Type: {[ key: string ]: string}
The files to render into the directory.
These files get added after
any files from source if that option is specified (replacing if names
overlap).
sourceDirOptional
public readonly sourceDir: string;
- Type: string
Absolute path to a directory to copy files from (does not need to be text files).
If your project is typescript-based and has configured testdir to be a
subdirectory of src, sample files should outside of the src directory
otherwise they may not be copied. For example:
new SampleDir(this, 'public', { source: path.join(__dirname, '..', 'sample-assets') });
SampleFileOptions
Options for the SampleFile object.
Initializer
import { SampleFileOptions } from 'projen'
const sampleFileOptions: SampleFileOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string | The contents of the file to write. |
| string | Absolute path to a file to copy the contents from (does not need to be a text file). |
contentsOptional
public readonly contents: string;
- Type: string
The contents of the file to write.
sourcePathOptional
public readonly sourcePath: string;
- Type: string
Absolute path to a file to copy the contents from (does not need to be a text file).
If your project is Typescript-based and has configured testdir to be a
subdirectory of src, sample files should outside of the src directory,
otherwise they may not be copied. For example:
new SampleFile(this, 'assets/icon.png', { sourcePath: path.join(__dirname, '..', 'sample-assets', 'icon.png') });
SampleReadmeProps
SampleReadme Properties.
Initializer
import { SampleReadmeProps } from 'projen'
const sampleReadmeProps: SampleReadmeProps = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string | The contents. |
| string | The name of the README.md file. |
contentsOptional
public readonly contents: string;
- Type: string
- Default: "# replace this"
The contents.
filenameOptional
public readonly filename: string;
- Type: string
- Default: "README.md"
The name of the README.md file.
Example
"readme.md"
SnapshotOptions
Options for the Snapshot synthesis.
Initializer
import { SnapshotOptions } from 'projen'
const snapshotOptions: SnapshotOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| boolean | Parse .json files as a JS object for improved inspection. This will fail if the contents are invalid JSON. |
parseJsonOptional
public readonly parseJson: boolean;
- Type: boolean
- Default: true parse .json files into an object
Parse .json files as a JS object for improved inspection. This will fail if the contents are invalid JSON.
SourceCodeOptions
Options for SourceCodeFile.
Initializer
import { SourceCodeOptions } from 'projen'
const sourceCodeOptions: SourceCodeOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| number | Indentation size. |
| boolean | Whether the generated file should be readonly. |
indentOptional
public readonly indent: number;
- Type: number
- Default: 2
Indentation size.
readonlyOptional
public readonly readonly: boolean;
- Type: boolean
- Default: true
Whether the generated file should be readonly.
TaskCommonOptions
Initializer
import { TaskCommonOptions } from 'projen'
const taskCommonOptions: TaskCommonOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string | A shell command which determines if the this task should be executed. |
| string | The working directory for all steps in this task (unless overridden by the step). |
| string | The description of this build command. |
| {[ key: string ]: string} | Defines environment variables for the execution of this task. |
| string[] | A set of environment variables that must be defined in order to execute this task. |
conditionOptional
public readonly condition: string;
- Type: string
A shell command which determines if the this task should be executed.
If the program exits with a zero exit code, steps will be executed. A non-zero code means that task will be skipped.
cwdOptional
public readonly cwd: string;
- Type: string
- Default: process.cwd()
The working directory for all steps in this task (unless overridden by the step).
descriptionOptional
public readonly description: string;
- Type: string
- Default: the task name
The description of this build command.
envOptional
public readonly env: {[ key: string ]: string};
- Type: {[ key: string ]: string}
- Default: {}
Defines environment variables for the execution of this task.
Values in this map will be evaluated in a shell, so you can do stuff like $(echo "foo").
requiredEnvOptional
public readonly requiredEnv: string[];
- Type: string[]
A set of environment variables that must be defined in order to execute this task.
Task execution will fail if one of these is not defined.
TaskOptions
Initializer
import { TaskOptions } from 'projen'
const taskOptions: TaskOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string | A shell command which determines if the this task should be executed. |
| string | The working directory for all steps in this task (unless overridden by the step). |
| string | The description of this build command. |
| {[ key: string ]: string} | Defines environment variables for the execution of this task. |
| string[] | A set of environment variables that must be defined in order to execute this task. |
| string[] | Should the provided exec shell command receive fixed args. |
| string | Shell command to execute as the first command of the task. |
| boolean | Should the provided exec shell command receive args passed to the task. |
| | List of task steps to run. |
conditionOptional
public readonly condition: string;
- Type: string
A shell command which determines if the this task should be executed.
If the program exits with a zero exit code, steps will be executed. A non-zero code means that task will be skipped.
cwdOptional
public readonly cwd: string;
- Type: string
- Default: process.cwd()
The working directory for all steps in this task (unless overridden by the step).
descriptionOptional
public readonly description: string;
- Type: string
- Default: the task name
The description of this build command.
envOptional
public readonly env: {[ key: string ]: string};
- Type: {[ key: string ]: string}
- Default: {}
Defines environment variables for the execution of this task.
Values in this map will be evaluated in a shell, so you can do stuff like $(echo "foo").
requiredEnvOptional
public readonly requiredEnv: string[];
- Type: string[]
A set of environment variables that must be defined in order to execute this task.
Task execution will fail if one of these is not defined.
argsOptional
public readonly args: string[];
- Type: string[]
- Default: no arguments are passed to the step
Should the provided exec shell command receive fixed args.
[{@link TaskStepOptions.args }]({@link TaskStepOptions.args })
execOptional
public readonly exec: string;
- Type: string
- Default: add steps using
task.exec(command)ortask.spawn(subtask)
Shell command to execute as the first command of the task.
receiveArgsOptional
public readonly receiveArgs: boolean;
- Type: boolean
- Default: false
Should the provided exec shell command receive args passed to the task.
[{@link TaskStepOptions.receiveArgs }]({@link TaskStepOptions.receiveArgs })
stepsOptional
public readonly steps: TaskStep[];
- Type: TaskStep[]
List of task steps to run.
TasksManifest
Schema for tasks.json.
Initializer
import { TasksManifest } from 'projen'
const tasksManifest: TasksManifest = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| {[ key: string ]: string} | Environment for all tasks. |
| | All tasks available for this project. |
envOptional
public readonly env: {[ key: string ]: string};
- Type: {[ key: string ]: string}
Environment for all tasks.
tasksOptional
public readonly tasks: {[ key: string ]: TaskSpec};
- Type: {[ key: string ]: TaskSpec}
All tasks available for this project.
TaskSpec
Specification of a single task.
Initializer
import { TaskSpec } from 'projen'
const taskSpec: TaskSpec = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string | A shell command which determines if the this task should be executed. |
| string | The working directory for all steps in this task (unless overridden by the step). |
| string | The description of this build command. |
| {[ key: string ]: string} | Defines environment variables for the execution of this task. |
| string[] | A set of environment variables that must be defined in order to execute this task. |
| string | Task name. |
| | Task steps. |
conditionOptional
public readonly condition: string;
- Type: string
A shell command which determines if the this task should be executed.
If the program exits with a zero exit code, steps will be executed. A non-zero code means that task will be skipped.
cwdOptional
public readonly cwd: string;
- Type: string
- Default: process.cwd()
The working directory for all steps in this task (unless overridden by the step).
descriptionOptional
public readonly description: string;
- Type: string
- Default: the task name
The description of this build command.
envOptional
public readonly env: {[ key: string ]: string};
- Type: {[ key: string ]: string}
- Default: {}
Defines environment variables for the execution of this task.
Values in this map will be evaluated in a shell, so you can do stuff like $(echo "foo").
requiredEnvOptional
public readonly requiredEnv: string[];
- Type: string[]
A set of environment variables that must be defined in order to execute this task.
Task execution will fail if one of these is not defined.
nameRequired
public readonly name: string;
- Type: string
Task name.
stepsOptional
public readonly steps: TaskStep[];
- Type: TaskStep[]
Task steps.
TaskStep
A single step within a task.
The step could either be the execution of a shell command or execution of a sub-task, by name.
Initializer
import { TaskStep } from 'projen'
const taskStep: TaskStep = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string[] | A list of fixed arguments always passed to the step. |
| string | A shell command which determines if the this step should be executed. |
| string | The working directory for this step. |
| {[ key: string ]: string} | Defines environment variables for the execution of this step (exec and builtin only). |
| string | Step name. |
| boolean | Should this step receive args passed to the task. |
| string | The name of a built-in task to execute. |
| string | Shell command to execute. |
| string | Print a message. |
| string | Subtask to execute. |
argsOptional
public readonly args: string[];
- Type: string[]
- Default: no arguments are passed to the step
A list of fixed arguments always passed to the step.
Useful to re-use existing tasks without having to re-define the whole task.
Fixed args are always passed to the step, even if receiveArgs is false
and are always passed before any args the task is called with.
If the step executes a shell commands, args are passed through at the end of the exec shell command.
The position of the args can be changed by including the marker $@ inside the command string.
If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect.
If the step calls a builtin script, args are passed to the script. It is up to the script to use or discard the arguments.
Example
task.spawn("deploy", { args: ["--force"] });
conditionOptional
public readonly condition: string;
- Type: string
A shell command which determines if the this step should be executed.
If the program exits with a zero exit code, the step will be executed. A non-zero code means the step will be skipped (subsequent task steps will still be evaluated/executed).
cwdOptional
public readonly cwd: string;
- Type: string
- Default: determined by the task
The working directory for this step.
envOptional
public readonly env: {[ key: string ]: string};
- Type: {[ key: string ]: string}
- Default: no environment variables defined in step
Defines environment variables for the execution of this step (exec and builtin only).
Values in this map can be simple, literal values or shell expressions that will be evaluated at runtime e.g. $(echo "foo").
Example
{ "foo": "bar", "boo": "$(echo baz)" }
nameOptional
public readonly name: string;
- Type: string
- Default: no name
Step name.
receiveArgsOptional
public readonly receiveArgs: boolean;
- Type: boolean
- Default: false
Should this step receive args passed to the task.
If true, args are passed through at the end of the exec shell command.
The position of the args can be changed by including the marker $@ inside the command string.
If the marker is explicitly double-quoted ("$@") arguments will be wrapped in single quotes, approximating the whitespace preserving behavior of bash variable expansion.
If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect.
Example
task.exec("echo Hello $@ World!", { receiveArgs: true });
builtinOptional
public readonly builtin: string;
- Type: string
- Default: do not execute a builtin task
The name of a built-in task to execute.
Built-in tasks are node.js programs baked into the projen module and as component runtime helpers.
The name is a path relative to the projen lib/ directory (without the .task.js extension).
For example, if your built in builtin task is under src/release/resolve-version.task.ts,
then this would be release/resolve-version.
execOptional
public readonly exec: string;
- Type: string
- Default: don't execute a shell command
Shell command to execute.
sayOptional
public readonly say: string;
- Type: string
- Default: don't say anything
Print a message.
spawnOptional
public readonly spawn: string;
- Type: string
- Default: don't spawn a subtask
Subtask to execute.
TaskStepOptions
Options for task steps.
Initializer
import { TaskStepOptions } from 'projen'
const taskStepOptions: TaskStepOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string[] | A list of fixed arguments always passed to the step. |
| string | A shell command which determines if the this step should be executed. |
| string | The working directory for this step. |
| {[ key: string ]: string} | Defines environment variables for the execution of this step (exec and builtin only). |
| string | Step name. |
| boolean | Should this step receive args passed to the task. |
argsOptional
public readonly args: string[];
- Type: string[]
- Default: no arguments are passed to the step
A list of fixed arguments always passed to the step.
Useful to re-use existing tasks without having to re-define the whole task.
Fixed args are always passed to the step, even if receiveArgs is false
and are always passed before any args the task is called with.
If the step executes a shell commands, args are passed through at the end of the exec shell command.
The position of the args can be changed by including the marker $@ inside the command string.
If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect.
If the step calls a builtin script, args are passed to the script. It is up to the script to use or discard the arguments.
Example
task.spawn("deploy", { args: ["--force"] });
conditionOptional
public readonly condition: string;
- Type: string
A shell command which determines if the this step should be executed.
If the program exits with a zero exit code, the step will be executed. A non-zero code means the step will be skipped (subsequent task steps will still be evaluated/executed).
cwdOptional
public readonly cwd: string;
- Type: string
- Default: determined by the task
The working directory for this step.
envOptional
public readonly env: {[ key: string ]: string};
- Type: {[ key: string ]: string}
- Default: no environment variables defined in step
Defines environment variables for the execution of this step (exec and builtin only).
Values in this map can be simple, literal values or shell expressions that will be evaluated at runtime e.g. $(echo "foo").
Example
{ "foo": "bar", "boo": "$(echo baz)" }
nameOptional
public readonly name: string;
- Type: string
- Default: no name
Step name.
receiveArgsOptional
public readonly receiveArgs: boolean;
- Type: boolean
- Default: false
Should this step receive args passed to the task.
If true, args are passed through at the end of the exec shell command.
The position of the args can be changed by including the marker $@ inside the command string.
If the marker is explicitly double-quoted ("$@") arguments will be wrapped in single quotes, approximating the whitespace preserving behavior of bash variable expansion.
If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect.
Example
task.exec("echo Hello $@ World!", { receiveArgs: true });
TextFileOptions
Options for TextFile.
Initializer
import { TextFileOptions } from 'projen'
const textFileOptions: TextFileOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| boolean | Indicates whether this file should be committed to git or ignored. |
| boolean | Update the project's .gitignore file. |
| boolean | Whether the generated file should be marked as executable. |
| boolean | Adds the projen marker to the file. |
| boolean | Whether the generated file should be readonly. |
| string[] | The contents of the text file. |
committedOptional
public readonly committed: boolean;
- Type: boolean
- Default: true
Indicates whether this file should be committed to git or ignored.
By default, all generated files are committed and anti-tamper is used to protect against manual modifications.
editGitignoreOptional
public readonly editGitignore: boolean;
- Type: boolean
- Default: true
Update the project's .gitignore file.
executableOptional
public readonly executable: boolean;
- Type: boolean
- Default: false
Whether the generated file should be marked as executable.
markerOptional
public readonly marker: boolean;
- Type: boolean
- Default: marker will be included as long as the project is not ejected
Adds the projen marker to the file.
readonlyOptional
public readonly readonly: boolean;
- Type: boolean
- Default: true
Whether the generated file should be readonly.
linesOptional
public readonly lines: string[];
- Type: string[]
- Default: [] empty file
The contents of the text file.
You can use addLine() to append lines.
TomlFileOptions
Options for TomlFile.
Initializer
import { TomlFileOptions } from 'projen'
const tomlFileOptions: TomlFileOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| boolean | Indicates whether this file should be committed to git or ignored. |
| boolean | Update the project's .gitignore file. |
| boolean | Whether the generated file should be marked as executable. |
| boolean | Adds the projen marker to the file. |
| boolean | Whether the generated file should be readonly. |
| any | The object that will be serialized. You can modify the object's contents before synthesis. |
| boolean | Omits empty objects and arrays. |
committedOptional
public readonly committed: boolean;
- Type: boolean
- Default: true
Indicates whether this file should be committed to git or ignored.
By default, all generated files are committed and anti-tamper is used to protect against manual modifications.
editGitignoreOptional
public readonly editGitignore: boolean;
- Type: boolean
- Default: true
Update the project's .gitignore file.
executableOptional
public readonly executable: boolean;
- Type: boolean
- Default: false
Whether the generated file should be marked as executable.
markerOptional
public readonly marker: boolean;
- Type: boolean
- Default: marker will be included as long as the project is not ejected
Adds the projen marker to the file.
readonlyOptional
public readonly readonly: boolean;
- Type: boolean
- Default: true
Whether the generated file should be readonly.
objOptional
public readonly obj: any;
- Type: any
- Default: {} an empty object (use
file.objto mutate).
The object that will be serialized. You can modify the object's contents before synthesis.
Serialization of the object is similar to JSON.stringify with few enhancements:
- values that are functions will be called during synthesis and the result will be serialized - this allow to have lazy values.
Setwill be converted to arrayMapwill be converted to a plain object ({ key: value, ... }})RegExpwithout flags will be converted to string representation of the source
omitEmptyOptional
public readonly omitEmpty: boolean;
- Type: boolean
- Default: false
Omits empty objects and arrays.
VersionBranchOptions
Options to pass to modifyBranchEnvironment.
Initializer
import { VersionBranchOptions } from 'projen'
const versionBranchOptions: VersionBranchOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| number | The major versions released from this branch. |
| number | The minimum major version to release. |
| number | The minor versions released from this branch. |
| string | Bump the version as a pre-release tag. |
| string | Automatically add the given prefix to release tags. Useful if you are releasing on multiple branches with overlapping version numbers. |
majorVersionOptional
public readonly majorVersion: number;
- Type: number
The major versions released from this branch.
minMajorVersionOptional
public readonly minMajorVersion: number;
- Type: number
The minimum major version to release.
minorVersionOptional
public readonly minorVersion: number;
- Type: number
The minor versions released from this branch.
prereleaseOptional
public readonly prerelease: string;
- Type: string
- Default: normal releases
Bump the version as a pre-release tag.
tagPrefixOptional
public readonly tagPrefix: string;
- Type: string
- Default: no prefix
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.
VersionOptions
Options for Version.
Initializer
import { VersionOptions } from 'projen'
const versionOptions: VersionOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| string | The name of the directory into which changelog.md and version.txt files are emitted. |
| string | A name of a .json file to set the version field in after a bump. |
| string | The commit-and-tag-version compatible package used to bump the package version, as a dependency string. |
| string | A shell command to control the next version to release. |
| | Find commits that should be considered releasable Used to decide if a release is required. |
| string | The tag prefix corresponding to this version. |
| {[ key: string ]: any} | Custom configuration for versionrc file used by standard-release. |
artifactsDirectoryRequired
public readonly artifactsDirectory: string;
- Type: string
The name of the directory into which changelog.md and version.txt files are emitted.
versionInputFileRequired
public readonly versionInputFile: string;
- Type: string
A name of a .json file to set the version field in after a bump.
Example
"package.json"
bumpPackageOptional
public readonly bumpPackage: string;
- Type: string
- Default: "commit-and-tag-version@12"
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.
nextVersionCommandOptional
public readonly nextVersionCommand: string;
- Type: string
- Default: The next version will be determined based on the commit history and project settings.
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 like1.2.3.$LATEST_TAG: the most recent tag. Looks likeprefix-v1.2.3, or may be unset.$SUGGESTED_BUMP: the suggested bump action based on commits. One ofmajor|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 bex.y.z.major|minor|patch: the next version number will be the current version number with the indicated component bumped.
releasableCommitsOptional
public readonly releasableCommits: ReleasableCommits;
- Type: ReleasableCommits
- Default: ReleasableCommits.everyCommit()
Find commits that should be considered releasable Used to decide if a release is required.
tagPrefixOptional
public readonly tagPrefix: string;
- Type: string
The tag prefix corresponding to this version.
versionrcOptionsOptional
public readonly versionrcOptions: {[ key: string ]: any};
- Type: {[ key: string ]: any}
Custom configuration for versionrc file used by standard-release.
XmlFileOptions
Options for XmlFile.
Initializer
import { XmlFileOptions } from 'projen'
const xmlFileOptions: XmlFileOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| boolean | Indicates whether this file should be committed to git or ignored. |
| boolean | Update the project's .gitignore file. |
| boolean | Whether the generated file should be marked as executable. |
| boolean | Adds the projen marker to the file. |
| boolean | Whether the generated file should be readonly. |
| any | The object that will be serialized. You can modify the object's contents before synthesis. |
| boolean | Omits empty objects and arrays. |
committedOptional
public readonly committed: boolean;
- Type: boolean
- Default: true
Indicates whether this file should be committed to git or ignored.
By default, all generated files are committed and anti-tamper is used to protect against manual modifications.
editGitignoreOptional
public readonly editGitignore: boolean;
- Type: boolean
- Default: true
Update the project's .gitignore file.
executableOptional
public readonly executable: boolean;
- Type: boolean
- Default: false
Whether the generated file should be marked as executable.
markerOptional
public readonly marker: boolean;
- Type: boolean
- Default: marker will be included as long as the project is not ejected
Adds the projen marker to the file.
readonlyOptional
public readonly readonly: boolean;
- Type: boolean
- Default: true
Whether the generated file should be readonly.
objOptional
public readonly obj: any;
- Type: any
- Default: {} an empty object (use
file.objto mutate).
The object that will be serialized. You can modify the object's contents before synthesis.
Serialization of the object is similar to JSON.stringify with few enhancements:
- values that are functions will be called during synthesis and the result will be serialized - this allow to have lazy values.
Setwill be converted to arrayMapwill be converted to a plain object ({ key: value, ... }})RegExpwithout flags will be converted to string representation of the source
omitEmptyOptional
public readonly omitEmpty: boolean;
- Type: boolean
- Default: false
Omits empty objects and arrays.
YamlFileOptions
Options for JsonFile.
Initializer
import { YamlFileOptions } from 'projen'
const yamlFileOptions: YamlFileOptions = { ... }
Properties
| Name | Type | Description |
|---|---|---|
| boolean | Indicates whether this file should be committed to git or ignored. |
| boolean | Update the project's .gitignore file. |
| boolean | Whether the generated file should be marked as executable. |
| boolean | Adds the projen marker to the file. |
| boolean | Whether the generated file should be readonly. |
| any | The object that will be serialized. You can modify the object's contents before synthesis. |
| boolean | Omits empty objects and arrays. |
| number | Maximum line width (set to 0 to disable folding). |
committedOptional
public readonly committed: boolean;
- Type: boolean
- Default: true
Indicates whether this file should be committed to git or ignored.
By default, all generated files are committed and anti-tamper is used to protect against manual modifications.
editGitignoreOptional
public readonly editGitignore: boolean;
- Type: boolean
- Default: true
Update the project's .gitignore file.
executableOptional
public readonly executable: boolean;
- Type: boolean
- Default: false
Whether the generated file should be marked as executable.
markerOptional
public readonly marker: boolean;
- Type: boolean
- Default: marker will be included as long as the project is not ejected
Adds the projen marker to the file.
readonlyOptional
public readonly readonly: boolean;
- Type: boolean
- Default: true
Whether the generated file should be readonly.
objOptional
public readonly obj: any;
- Type: any
- Default: {} an empty object (use
file.objto mutate).
The object that will be serialized. You can modify the object's contents before synthesis.
Serialization of the object is similar to JSON.stringify with few enhancements:
- values that are functions will be called during synthesis and the result will be serialized - this allow to have lazy values.
Setwill be converted to arrayMapwill be converted to a plain object ({ key: value, ... }})RegExpwithout flags will be converted to string representation of the source
omitEmptyOptional
public readonly omitEmpty: boolean;
- Type: boolean
- Default: false
Omits empty objects and arrays.
lineWidthOptional
public readonly lineWidth: number;
- Type: number
- Default: 0
Maximum line width (set to 0 to disable folding).
Classes
DevEnvironmentDockerImage
Options for specifying the Docker image of the container.
Static Functions
| Name | Description |
|---|---|
| The relative path of a Dockerfile that defines the container contents. |
| A publicly available Docker image. |
fromFile
import { DevEnvironmentDockerImage } from 'projen'
DevEnvironmentDockerImage.fromFile(dockerFile: string)
The relative path of a Dockerfile that defines the container contents.
Example
'.gitpod.Docker'
dockerFileRequired
- Type: string
a relative path.
fromImage
import { DevEnvironmentDockerImage } from 'projen'
DevEnvironmentDockerImage.fromImage(image: string)
A publicly available Docker image.
Example
'ubuntu:latest'
imageRequired
- Type: string
a Docker image.
Properties
| Name | Type | Description |
|---|---|---|
| string | The relative path of a Dockerfile that defines the container contents. |
| string | A publicly available Docker image. |
dockerFileOptional
public readonly dockerFile: string;
- Type: string
The relative path of a Dockerfile that defines the container contents.
imageOptional
public readonly image: string;
- Type: string
A publicly available Docker image.
DockerComposeService
- Implements: IDockerComposeServiceName
A docker-compose service.
Initializers
import { DockerComposeService } from 'projen'
new DockerComposeService(serviceName: string, serviceDescription: DockerComposeServiceDescription)
| Name | Type | Description |
|---|---|---|
| string | The name of the docker compose service. |
| | No description. |
serviceNameRequired
- Type: string
The name of the docker compose service.
serviceDescriptionRequired
Methods
| Name | Description |
|---|---|
| Make the service depend on another service. |
| Add an environment variable. |
| Add a label. |
| Add a network to the service. |
| Add a port mapping. |
| Add a volume to the service. |
addDependsOn
public addDependsOn(serviceName: IDockerComposeServiceName): void
Make the service depend on another service.
serviceNameRequired
addEnvironment
public addEnvironment(name: string, value: string): void
Add an environment variable.
nameRequired
- Type: string
environment variable name.
valueRequired
- Type: string
value of the environment variable.
addLabel
public addLabel(name: string, value: string): void
Add a label.
nameRequired
- Type: string
environment variable name.
valueRequired
- Type: string
value of the environment variable.
addNetwork
public addNetwork(network: IDockerComposeNetworkBinding): void
Add a network to the service.
networkRequired
addPort
public addPort(publishedPort: number, targetPort: number, options?: DockerComposePortMappingOptions): void
Add a port mapping.
publishedPortRequired
- Type: number
Published port number.
targetPortRequired
- Type: number
Container's port number.
optionsOptional
Port mapping options.
addVolume
public addVolume(volume: IDockerComposeVolumeBinding): void
Add a volume to the service.
volumeRequired
Properties
| Name | Type | Description |
|---|---|---|
| | Other services that this service depends on. |
| {[ key: string ]: string} | Environment variables. |
| {[ key: string ]: string} | Attached labels. |
| | Networks mounted in the container. |
| | Published ports. |
| string | Name of the service. |
| | Volumes mounted in the container. |
| string[] | Command to run in the container. |
| string[] | Entrypoint to run in the container. |
| string | Docker image. |
| | Docker image build instructions. |
| string | Target platform. |
| boolean | Run in privileged mode. |
dependsOnRequired
public readonly dependsOn: IDockerComposeServiceName[];
- Type: IDockerComposeServiceName[]
Other services that this service depends on.
environmentRequired
public readonly environment: {[ key: string ]: string};
- Type: {[ key: string ]: string}
Environment variables.
labelsRequired
public readonly labels: {[ key: string ]: string};
- Type: {[ key: string ]: string}
Attached labels.
networksRequired
public readonly networks: IDockerComposeNetworkBinding[];
- Type: IDockerComposeNetworkBinding[]
Networks mounted in the container.
portsRequired
public readonly ports: DockerComposeServicePort[];
- Type: DockerComposeServicePort[]
Published ports.
serviceNameRequired
public readonly serviceName: string;
- Type: string
Name of the service.
volumesRequired
public readonly volumes: IDockerComposeVolumeBinding[];
- Type: IDockerComposeVolumeBinding[]
Volumes mounted in the container.
commandOptional
public readonly command: string[];
- Type: string[]
Command to run in the container.
entrypointOptional
public readonly entrypoint: string[];
- Type: string[]
Entrypoint to run in the container.
imageOptional
public readonly image: string;
- Type: string
Docker image.
imageBuildOptional
public readonly imageBuild: DockerComposeBuild;
- Type: DockerComposeBuild
Docker image build instructions.
platformOptional
public readonly platform: string;
- Type: string
Target platform.
privilegedOptional
public readonly privileged: boolean;
- Type: boolean
Run in privileged mode.
JsonPatch
Utility for applying RFC-6902 JSON-Patch to a document.
Use the the JsonPatch.apply(doc, ...ops) function to apply a set of
operations to a JSON document and return the result.
Operations can be created using the factory methods JsonPatch.add(),
JsonPatch.remove(), etc.
Example
const output = JsonPatch.apply(input,
JsonPatch.replace('/world/hi/there', 'goodbye'),
JsonPatch.add('/world/foo/', 'boom'),
JsonPatch.remove('/hello'));
Static Functions
| Name | Description |
|---|---|
| Adds a value to an object or inserts it into an array. |
| Applies a set of JSON-Patch (RFC-6902) operations to document and returns the result. |
| Copies a value from one location to another within the JSON document. |
| Escapes a json pointer path. |
| Moves a value from one location to the other. |
| Removes a value from an object or array. |
| Replaces a value. |
| Tests that the specified value is set in the document. |
add
import { JsonPatch } from 'projen'
JsonPatch.add(path: string, value: any)
Adds a value to an object or inserts it into an array.
In the case of an array, the value is inserted before the given index. The - character can be used instead of an index to insert at the end of an array.
Example
JsonPatch.add('/biscuits/1', { "name": "Ginger Nut" })
pathRequired
- Type: string
valueRequired
- Type: any
apply
import { JsonPatch } from 'projen'
JsonPatch.apply(document: any, ops: ...JsonPatch[])
Applies a set of JSON-Patch (RFC-6902) operations to document and returns the result.
documentRequired
- Type: any
The document to patch.
opsRequired
- Type: ...JsonPatch[]
The operations to apply.
copy
import { JsonPatch } from 'projen'
JsonPatch.copy(from: string, path: string)
Copies a value from one location to another within the JSON document.
Both from and path are JSON Pointers.
Example
JsonPatch.copy('/biscuits/0', '/best_biscuit')
fromRequired
- Type: string
pathRequired
- Type: string
escapePath
import { JsonPatch } from 'projen'
JsonPatch.escapePath(path: string)
Escapes a json pointer path.
pathRequired
- Type: string
The raw pointer.
move
import { JsonPatch } from 'projen'
JsonPatch.move(from: string, path: string)
Moves a value from one location to the other.
Both from and path are JSON Pointers.
Example
JsonPatch.move('/biscuits', '/cookies')
fromRequired
- Type: string
pathRequired
- Type: string
remove
import { JsonPatch } from 'projen'
JsonPatch.remove(path: string)
Removes a value from an object or array.
Example
JsonPatch.remove('/biscuits/0')
pathRequired
- Type: string
replace
import { JsonPatch } from 'projen'
JsonPatch.replace(path: string, value: any)
Replaces a value.
Equivalent to a “remove” followed by an “add”.
Example
JsonPatch.replace('/biscuits/0/name', 'Chocolate Digestive')
pathRequired
- Type: string
valueRequired
- Type: any
test
import { JsonPatch } from 'projen'
JsonPatch.test(path: string, value: any, failureBehavior?: TestFailureBehavior)
Tests that the specified value is set in the document.
If the test fails, then the patch as a whole should not apply.
Example
JsonPatch.test('/best_biscuit/name', 'Choco Leibniz')
pathRequired
- Type: string
valueRequired
- Type: any
failureBehaviorOptional
- Type: TestFailureBehavior
Projects
Programmatic API for projen.
Static Functions
| Name | Description |
|---|---|
| Creates a new project with defaults. |
createProject
import { Projects } from 'projen'
Projects.createProject(options: CreateProjectOptions)
Creates a new project with defaults.
This function creates the project type in-process (with in VM) and calls
.synth() on it (if options.synth is not false).
At the moment, it also generates a .projenrc.js file with the same code
that was just executed. In the future, this will also be done by the project
type, so we can easily support multiple languages of projenrc.
An environment variable (PROJEN_CREATE_PROJECT=true) is set within the VM so that custom project types can detect whether the current synthesis is the result of a new project creation (and take additional steps accordingly)
optionsRequired
- Type: CreateProjectOptions
ReleasableCommits
Find commits that should be considered releasable to decide if a release is required.
This setting only controls whether a release is triggered, yes or no. The paths used here are independent of the code that controls what commits are inspected to determine the version number.
Static Functions
| Name | Description |
|---|---|
| Release every commit. |
| Use an arbitrary shell command to find releasable commits since the latest tag. |
| Release only features and fixes. |
| Limit commits by their conventional commit type. |
everyCommit
import { ReleasableCommits } from 'projen'
ReleasableCommits.everyCommit(path?: string)
Release every commit.
This will only not release if the most recent commit is tagged with the latest matching tag.
pathOptional
- Type: string
Consider only commits that are enough to explain how the files that match the specified paths came to be.
This path is relative to the current working dir of the bump task, i.e. to only consider commits of a subproject use ".".
exec
import { ReleasableCommits } from 'projen'
ReleasableCommits.exec(cmd: string)
Use an arbitrary shell command to find releasable commits since the latest tag.
A new release will be initiated, if the number of returned commits is greater than zero.
Must return a newline separate list of commits that should considered releasable.
$LATEST_TAG will be replaced with the actual latest tag for the given prefix.*
Example
"git log --oneline $LATEST_TAG..HEAD -- ."
cmdRequired
- Type: string
featuresAndFixes
import { ReleasableCommits } from 'projen'
ReleasableCommits.featuresAndFixes(path?: string)
Release only features and fixes.
Shorthand for ReleasableCommits.onlyOfType(['feat', 'fix']).
pathOptional
- Type: string
Consider only commits that are enough to explain how the files that match the specified paths came to be.
This path is relative to the current working dir of the bump task, i.e. to only consider commits of a subproject use ".".
ofType
import { ReleasableCommits } from 'projen'
ReleasableCommits.ofType(types: string[], path?: string)
Limit commits by their conventional commit type.
This will only release commit that match one of the provided types. Commits are required to follow the conventional commit spec and will be ignored otherwise.
typesRequired
- Type: string[]
List of conventional commit types that should be released.
pathOptional
- Type: string
Consider only commits that are enough to explain how the files that match the specified paths came to be.
This path is relative to the current working dir of the bump task, i.e. to only consider commits of a subproject use ".".
Properties
| Name | Type | Description |
|---|---|---|
| string | No description. |
cmdRequired
public readonly cmd: string;
- Type: string
Semver
Static Functions
| Name | Description |
|---|---|
| Accept any minor version. |
| Latest version. |
| No description. |
| Accept only an exact version. |
| Accept patches. |
caret
caretimport { Semver } from 'projen'
Semver.caret(version: string)
Accept any minor version.
= version < next major version
versionRequired
- Type: string
latest
latestimport { Semver } from 'projen'
Semver.latest()
Latest version.
of
ofimport { Semver } from 'projen'
Semver.of(spec: string)
specRequired
- Type: string
pinned
pinnedimport { Semver } from 'projen'
Semver.pinned(version: string)
Accept only an exact version.
versionRequired
- Type: string
tilde
tildeimport { Semver } from 'projen'
Semver.tilde(version: string)
Accept patches.
= version < next minor version
versionRequired
- Type: string
Properties
| Name | Type | Description |
|---|---|---|
| string | No description. |
| string | No description. |
| string | No description. |
specRequired
spec- Deprecated: This class will be removed in upcoming releases. if you wish to
specify semver requirements in
deps,devDeps, etc, specify them like soexpress@^2.1.
public readonly spec: string;
- Type: string
modeOptional
mode- Deprecated: This class will be removed in upcoming releases. if you wish to
specify semver requirements in
deps,devDeps, etc, specify them like soexpress@^2.1.
public readonly mode: string;
- Type: string
versionOptional
version- Deprecated: This class will be removed in upcoming releases. if you wish to
specify semver requirements in
deps,devDeps, etc, specify them like soexpress@^2.1.
public readonly version: string;
- Type: string
Task
A task that can be performed on the project.
Modeled as a series of shell commands and subtasks.
Initializers
import { Task } from 'projen'
new Task(name: string, props?: TaskOptions)
| Name | Type | Description |
|---|---|---|
| string | No description. |
| | No description. |
nameRequired
- Type: string
propsOptional
- Type: TaskOptions
Methods
| Name | Description |
|---|---|
| Add a command to execute which determines if the task should be skipped. |
| Execute a builtin task. |
| Adds an environment variable to this task. |
| Executes a shell command. |
| Insert one or more steps at a given index. |
| Forbid additional changes to this task. |
| Adds a command at the beginning of the task. |
| Adds a command at the beginning of the task. |
| Says something at the beginning of the task. |
| Adds a spawn instruction at the beginning of the task. |
| No description. |
| Reset the task so it no longer has any commands. |
| Say something. |
| Spawns a sub-task. |
| No description. |
addCondition
public addCondition(condition: ...string[]): void
Add a command to execute which determines if the task should be skipped.
If a condition already exists, the new condition will be appended with && delimiter.
[{@link Task.condition }]({@link Task.condition })
conditionRequired
- Type: ...string[]
The command to execute.
builtin
public builtin(name: string): void
Execute a builtin task.
Builtin tasks are programs bundled as part of projen itself and used as helpers for various components.
In the future we should support built-in tasks from external modules.
nameRequired
- Type: string
The name of the builtin task to execute (e.g. release/resolve-version).
env
public env(name: string, value: string): void
Adds an environment variable to this task.
nameRequired
- Type: string
The name of the variable.
valueRequired
- Type: string
The value.
If the value is surrounded by $(), we will
evaluate it within a subshell and use the result as the value of the
environment variable.
exec
public exec(command: string, options?: TaskStepOptions): void
Executes a shell command.
commandRequired
- Type: string
Shell command.
optionsOptional
- Type: TaskStepOptions
Options.
insertStep
public insertStep(index: number, steps: ...TaskStep[]): void
Insert one or more steps at a given index.
indexRequired
- Type: number
Steps will be inserted before this index.
May be negative to
count backwards from the end, or may be == steps().length to insert at the end.
stepsRequired
- Type: ...TaskStep[]
The steps to insert.
lock
public lock(): void
Forbid additional changes to this task.
prepend
prependpublic prepend(shell: string, options?: TaskStepOptions): void
Adds a command at the beginning of the task.
shellRequired
- Type: string
The command to add.
optionsOptional
- Type: TaskStepOptions
prependExec
public prependExec(shell: string, options?: TaskStepOptions): void
Adds a command at the beginning of the task.
shellRequired
- Type: string
The command to add.
optionsOptional
- Type: TaskStepOptions
prependSay
public prependSay(message: string, options?: TaskStepOptions): void
Says something at the beginning of the task.
messageRequired
- Type: string
Your message.
optionsOptional
- Type: TaskStepOptions
prependSpawn
public prependSpawn(subtask: Task, options?: TaskStepOptions): void
Adds a spawn instruction at the beginning of the task.
subtaskRequired
- Type: Task
The subtask to execute.
optionsOptional
- Type: TaskStepOptions
removeStep
public removeStep(index: number): void
indexRequired
- Type: number
The index of the step to remove.
reset
public reset(command?: string, options?: TaskStepOptions): void
Reset the task so it no longer has any commands.
commandOptional
- Type: string
the first command to add to the task after it was cleared.
optionsOptional
- Type: TaskStepOptions
say
public say(message: string, options?: TaskStepOptions): void
Say something.
messageRequired
- Type: string
Your message.
optionsOptional
- Type: TaskStepOptions
Options.
spawn
public spawn(subtask: Task, options?: TaskStepOptions): void
Spawns a sub-task.
subtaskRequired
- Type: Task
The subtask to execute.
optionsOptional
- Type: TaskStepOptions
updateStep
public updateStep(index: number, step: TaskStep): void
indexRequired
- Type: number
The index of the step to edit.
stepRequired
- Type: TaskStep
The new step to replace the old one entirely, it is not merged with the old step.
Properties
| Name | Type | Description |
|---|---|---|
| {[ key: string ]: string} | Returns all environment variables in the task level. |
| string | Task name. |
| | Returns an immutable copy of all the step specifications of the task. |
| string | A command to execute which determines if the task should be skipped. |
| string | Returns the working directory for this task. |
| string | Returns the description of this task. |
envVarsRequired
public readonly envVars: {[ key: string ]: string};
- Type: {[ key: string ]: string}
Returns all environment variables in the task level.
nameRequired
public readonly name: string;
- Type: string
Task name.
stepsRequired
public readonly steps: TaskStep[];
- Type: TaskStep[]
Returns an immutable copy of all the step specifications of the task.
conditionOptional
public readonly condition: string;
- Type: string
A command to execute which determines if the task should be skipped.
If it returns a zero exit code, the task will not be executed.
cwdOptional
public readonly cwd: string;
- Type: string
Returns the working directory for this task.
Sets the working directory for this task.
descriptionOptional
public readonly description: string;
- Type: string
Returns the description of this task.
Sets the description of this task.
TaskRuntime
The runtime component of the tasks engine.
Initializers
import { TaskRuntime } from 'projen'
new TaskRuntime(workdir: string)
| Name | Type | Description |
|---|---|---|
| string | No description. |
workdirRequired
- Type: string
Methods
| Name | Description |
|---|---|
| Runs the task. |
| Find a task by name, or undefined if not found. |
runTask
public runTask(name: string, parents?: string[], args?: (string | number)[], env?: {[ key: string ]: string}): void
Runs the task.
nameRequired
- Type: string
The task name.
parentsOptional
- Type: string[]
argsOptional
- Type: string | number[]
envOptional
- Type: {[ key: string ]: string}
tryFindTask
public tryFindTask(name: string): TaskSpec
Find a task by name, or undefined if not found.
nameRequired
- Type: string
Properties
| Name | Type | Description |
|---|---|---|
| | The contents of tasks.json. |
| | The tasks in this project. |
| string | The root directory of the project and the cwd for executing tasks. |
manifestRequired
public readonly manifest: TasksManifest;
- Type: TasksManifest
The contents of tasks.json.
tasksRequired
public readonly tasks: TaskSpec[];
- Type: TaskSpec[]
The tasks in this project.
workdirRequired
public readonly workdir: string;
- Type: string
The root directory of the project and the cwd for executing tasks.
Constants
| Name | Type | Description |
|---|---|---|
| string | The project-relative path of the tasks manifest file. |
MANIFEST_FILERequired
public readonly MANIFEST_FILE: string;
- Type: string
The project-relative path of the tasks manifest file.
Testing
A Testing static class with a .synth helper for getting a snapshots of construct outputs. Useful for snapshot testing with Jest.
Example
`expect(Testing.synth(someProject)).toMatchSnapshot()`
Static Functions
| Name | Description |
|---|---|
| Produces a simple JS object that represents the contents of the projects with field names being file paths. |
synth
import { Testing } from 'projen'
Testing.synth(project: Project, options?: SnapshotOptions)
Produces a simple JS object that represents the contents of the projects with field names being file paths.
projectRequired
- Type: Project
the project to produce a snapshot for.
optionsOptional
- Type: SnapshotOptions
Protocols
ICompareString
- Implemented By: ICompareString
Methods
| Name | Description |
|---|---|
| No description. |
compare
public compare(a: string, b: string): number
aRequired
- Type: string
The first string.
bRequired
- Type: string
The second string.
IDevEnvironment
- Implemented By: projen.vscode.DevContainer, Gitpod, projen.vscode.IDevContainerEnvironment, IDevEnvironment
Abstract interface for container-based development environments, such as Gitpod and GitHub Codespaces.
Methods
| Name | Description |
|---|---|
| Add a custom Docker image or Dockerfile for the container. |
| Adds ports that should be exposed (forwarded) from the container. |
| Adds tasks to run when the container starts. |
| Adds a list of VSCode extensions that should be automatically installed in the container. |
addDockerImage
public addDockerImage(image: DevEnvironmentDockerImage): void
Add a custom Docker image or Dockerfile for the container.
imageRequired
The Docker image.
addPorts
public addPorts(ports: ...string[]): void
Adds ports that should be exposed (forwarded) from the container.
portsRequired
- Type: ...string[]
The new ports.
addTasks
public addTasks(tasks: ...Task[]): void
Adds tasks to run when the container starts.
tasksRequired
- Type: ...Task[]
The new tasks.
addVscodeExtensions
public addVscodeExtensions(extensions: ...string[]): void
Adds a list of VSCode extensions that should be automatically installed in the container.
extensionsRequired
- Type: ...string[]
The extension IDs.
IDockerComposeNetworkBinding
- Implemented By: IDockerComposeNetworkBinding
Network binding information.
Methods
| Name | Description |
|---|---|
| Binds the requested network to the docker-compose network configuration and provide mounting instructions for synthesis. |
bind
public bind(networkConfig: IDockerComposeNetworkConfig): string
Binds the requested network to the docker-compose network configuration and provide mounting instructions for synthesis.
networkConfigRequired
the network configuration.
IDockerComposeNetworkConfig
- Implemented By: IDockerComposeNetworkConfig
Storage for network configuration.
Methods
| Name | Description |
|---|---|
| Add network configuration to the repository. |
addNetworkConfiguration
public addNetworkConfiguration(networkName: string, configuration: DockerComposeNetworkConfig): void
Add network configuration to the repository.
networkNameRequired
- Type: string
configurationRequired
IDockerComposeServiceName
- Implemented By: DockerComposeService, IDockerComposeServiceName
An interface providing the name of a docker compose service.
Properties
| Name | Type | Description |
|---|---|---|
| string | The name of the docker compose service. |
serviceNameRequired
public readonly serviceName: string;
- Type: string
The name of the docker compose service.
IDockerComposeVolumeBinding
- Implemented By: IDockerComposeVolumeBinding
Volume binding information.
Methods
| Name | Description |
|---|---|
| Binds the requested volume to the docker-compose volume configuration and provide mounting instructions for synthesis. |
bind
public bind(volumeConfig: IDockerComposeVolumeConfig): DockerComposeVolumeMount
Binds the requested volume to the docker-compose volume configuration and provide mounting instructions for synthesis.
volumeConfigRequired
the volume configuration.
IDockerComposeVolumeConfig
- Implemented By: IDockerComposeVolumeConfig
Storage for volume configuration.
Methods
| Name | Description |
|---|---|
| Add volume configuration to the repository. |
addVolumeConfiguration
public addVolumeConfiguration(volumeName: string, configuration: DockerComposeVolumeConfig): void
Add volume configuration to the repository.
volumeNameRequired
- Type: string
configurationRequired
IResolvable
- Implemented By: IResolvable
Methods
| Name | Description |
|---|---|
| Resolves and returns content. |
toJSON
public toJSON(): any
Resolves and returns content.
IResolver
- Implemented By: IResolver
API for resolving tokens when synthesizing file content.
Methods
| Name | Description |
|---|---|
| Given a value (object/string/array/whatever, looks up any functions inside the object and returns an object where all functions are called. |
resolve
public resolve(value: any, options?: ResolveOptions): any
Given a value (object/string/array/whatever, looks up any functions inside the object and returns an object where all functions are called.
valueRequired
- Type: any
The value to resolve.
optionsOptional
- Type: ResolveOptions
Enums
AiAgent
Supported AI coding assistants and their instruction file locations.
Members
| Name | Description |
|---|---|
| GitHub Copilot - .github/copilot-instructions.md. |
| Cursor IDE - .cursor/rules/project.md. |
| Claude Code - CLAUDE.md. |
| Amazon Q - .amazonq/rules/project.md. |
| Kiro - .kiro/steering/project.md. |
GITHUB_COPILOT
GitHub Copilot - .github/copilot-instructions.md.
CURSOR
Cursor IDE - .cursor/rules/project.md.
CLAUDE
Claude Code - CLAUDE.md.
AMAZON_Q
Amazon Q - .amazonq/rules/project.md.
KIRO
Kiro - .kiro/steering/project.md.
DependencyType
Type of dependency.
Members
| Name | Description |
|---|---|
| The dependency is required for the program/library during runtime. |
| The dependency is required at runtime but expected to be installed by the consumer. |
| The dependency is bundled and shipped with the module, so consumers are not required to install it. |
| The dependency is required to run the build task. |
| The dependency is required to run the test task. |
| The dependency is required for development (e.g. IDE plugins). |
| Transient dependency that needs to be overwritten. |
| An optional dependency that may be used at runtime if available, but is not required. |
RUNTIME
The dependency is required for the program/library during runtime.
PEER
The dependency is required at runtime but expected to be installed by the consumer.
BUNDLED
The dependency is bundled and shipped with the module, so consumers are not required to install it.
BUILD
The dependency is required to run the build task.
TEST
The dependency is required to run the test task.
DEVENV
The dependency is required for development (e.g. IDE plugins).
OVERRIDE
Transient dependency that needs to be overwritten.
Available for Node packages
OPTIONAL
An optional dependency that may be used at runtime if available, but is not required.
It is expected to be installed by the consumer.
DockerComposeProtocol
Network protocol for port mapping.
Members
| Name | Description |
|---|---|
| TCP protocol. |
| UDP protocol. |
TCP
TCP protocol.
UDP
UDP protocol.
EndOfLine
The end of line characters supported by git.
Members
| Name | Description |
|---|---|
| Maintain existing (mixed values within one file are normalised by looking at what's used after the first line). |
| Carriage Return + Line Feed characters (\r\n), common on Windows. |
| Line Feed only (\n), common on Linux and macOS as well as inside git repos. |
| Disable and do not configure the end of line character. |
AUTO
Maintain existing (mixed values within one file are normalised by looking at what's used after the first line).
CRLF
Carriage Return + Line Feed characters (\r\n), common on Windows.
LF
Line Feed only (\n), common on Linux and macOS as well as inside git repos.
NONE
Disable and do not configure the end of line character.
GitpodOnOpen
What to do when a service on a port is detected.
Members
| Name | Description |
|---|---|
| Open a new browser tab. |
| Open a preview on the right side of the IDE. |
| Show a notification asking the user what to do (default). |
| Do nothing. |
OPEN_BROWSER
Open a new browser tab.
OPEN_PREVIEW
Open a preview on the right side of the IDE.
NOTIFY
Show a notification asking the user what to do (default).
IGNORE
Do nothing.
GitpodOpenIn
Configure where in the IDE the terminal should be opened.
Members
| Name | Description |
|---|---|
| the bottom panel (default). |
| the left panel. |
| the right panel. |
| the main editor area. |
BOTTOM
the bottom panel (default).
LEFT
the left panel.
RIGHT
the right panel.
MAIN
the main editor area.
GitpodOpenMode
Configure how the terminal should be opened relative to the previous task.
Members
| Name | Description |
|---|---|
| Opens in the same tab group right after the previous tab. |
| Opens in the same tab group left before the previous tab. |
| Splits and adds the terminal to the right. |
| Splits and adds the terminal to the left. |
| Splits and adds the terminal to the top. |
| Splits and adds the terminal to the bottom. |
TAB_AFTER
Opens in the same tab group right after the previous tab.
TAB_BEFORE
Opens in the same tab group left before the previous tab.
SPLIT_RIGHT
Splits and adds the terminal to the right.
SPLIT_LEFT
Splits and adds the terminal to the left.
SPLIT_TOP
Splits and adds the terminal to the top.
SPLIT_BOTTOM
Splits and adds the terminal to the bottom.
GitpodPortVisibility
Whether the port visibility should be private or public.
Members
| Name | Description |
|---|---|
| Allows everyone with the port URL to access the port (default). |
| Only allows users with workspace access to access the port. |
PUBLIC
Allows everyone with the port URL to access the port (default).
PRIVATE
Only allows users with workspace access to access the port.
InitProjectOptionHints
Choices for how to display commented out options in projenrc files.
Does not apply to projenrc.json files.
Members
| Name | Description |
|---|---|
| Display all possible options (grouped by which interface they belong to). |
| Display only featured options, in alphabetical order. |
| Display no extra options. |
ALL
Display all possible options (grouped by which interface they belong to).
FEATURED
Display only featured options, in alphabetical order.
NONE
Display no extra options.
LogLevel
Logging verbosity.
Members
| Name | Description |
|---|---|
| No description. |
| No description. |
| No description. |
| No description. |
| No description. |
| No description. |
OFF
ERROR
WARN
INFO
DEBUG
VERBOSE
ProjectType
Which type of project this is.
Members
| Name | Description |
|---|---|
| This module may be a either a library or an app. |
| This is a library, intended to be published to a package manager and consumed by other projects. |
| This is an app (service, tool, website, etc). |
UNKNOWN
UNKNOWN- Deprecated: no longer supported at the base project level
This module may be a either a library or an app.
LIB
LIB- Deprecated: no longer supported at the base project level
This is a library, intended to be published to a package manager and consumed by other projects.
APP
APP- Deprecated: no longer supported at the base project level
This is an app (service, tool, website, etc).
Its artifacts are intended to be deployed or published for end-user consumption.
RenovatebotScheduleInterval
How often to check for new versions and raise pull requests for version updates.
Members
| Name | Description |
|---|---|
| Run at any time. |
| Weekly schedule on early monday mornings. |
| Schedule daily. |
| Schedule monthly. |
| Schedule quarterly. |
| Schedule for weekends. |
| Schedule for weekdays. |
ANY_TIME
Run at any time.
EARLY_MONDAYS
Weekly schedule on early monday mornings.
DAILY
Schedule daily.
MONTHLY
Schedule monthly.
QUARTERLY
Schedule quarterly.
WEEKENDS
Schedule for weekends.
WEEKDAYS
Schedule for weekdays.
TestFailureBehavior
Members
| Name | Description |
|---|---|
| Skip the current patch operation and continue with the next operation. |
| Fail the whole file synthesis. |
SKIP
Skip the current patch operation and continue with the next operation.
FAIL_SYNTHESIS
Fail the whole file synthesis.