Repository navigation
0.9.0 (2023-11-17)
⚠ BREAKING CHANGES
- json-patch: A failure of
JsonPatch.testdoes not fail synthesis anymore. To preserve previous behavior, passTestFailureBehavior.FAIL_SYNTHESISas third parameter to theJsonPatch.testcall. - json-patch: Calls of
JsonPatch.testare now only relevant to the scope of the list of patches passed toObjectFile.patch. This should not break anything for truthy tests, and should not be relevant for failing tests. However, in case any issues are encountered, the previous behavior can be restored by placing allJsonPatches in a single call ofObjectFile.patch. - gitlab: All
variablesare now Records of strings, as per documentation. If you are currently passing in a number, please convert it to a string. - node-package: This may potentially affect some edge cases that were relying on the internal implementation of the dependencies handling. If new dependencies appear/disappear after applying this fix, previous code
preSynthesizehandler should be inspected for any.addDependency-like calls - those were incorrectly ignored previously and should be removed if actually are not needed. - upgrade-dependencies: When upgrading dependencies, installed packages are now checked for peer dependencies and updates will be filtered to satisfy respective version constraints. The previous behavior was to always upgrade to the latest minor version and ignore incompatible peer dependency constraints. To use the previous behavior, set
satisfyPeerDependencies: false. - upgrade-dependencies: In v0.72.0 a bug was accidently introduced that causes peer dependencies to be always excluded from version upgrades. This releases fixes the issue. To not upgrade peer dependencies, only list desired dependency types in
types.
Fixes projen#2874
Fixes projen#2875
Closes projen#1601
- upgrade-dependencies: the
renderUpgradePackagesCommandhas been removed fromNodePackage. It should never have been used. Instead, configure the appropriatedepsUpgradeOptionsto control the upgrade task. If you render the upgrade command for a different purpose, you'll have to construct the command yourself according to the appropriate package manager. - github: To align the
PullRequestFromPatchOptionsinterface with the newly introduced feature, two options have moved:
PullRequestFromPatchOptions.patch.workflowName->PullRequestFromPatchOptions.workflowName,PullRequestFromPatchOptions.ref->PullRequestFromPatchOptions.patch.ref. - The values of
JestConfigOptions.transformsandJestConfigOptions.watchPluginshave changed types and now use a dedicated class, in order to enable use in non-JS/TS languages. - node: default to node16
To use any other Node version, explicitly provide the desired version number - node: remove
jsii/superchainimage from AwsCdkConstructLibrary workflows - subproject: Projenrc components are no longer added to subprojects
When a project is a subproject, they do not require a projenrc file.
Previously a Projenrc component was added to every subproject.
To restore the previous behavior, you can manually add the requiredProjenrccomponent to the project:
declare subproject: typescript.TypeScriptProject;
new typescript.Projenrc(subproject);Features
- add
workflowContainerImagetoPublisher(#2572) (9554bd7) - add runner group support (#2817) (9bdf7d0), closes #2814
- add support for Git LFS (#2455) (adfcf6c)
- add Yarnrc component for YARN_BERRY (#3048) (7a3883a), closes #2980
- allow prettier configuration in yaml (#2388) (8cba761), closes /github.com/projen/projen/blob/main/src/javascript/eslint.ts#L85
- awscdk: add experimental integ-runner support (#2963) (a579d86)
- build: allow setting workflow file name (#2754) (c8c1428), closes #2753
- bundler: add
esbuild--formatcontrol (#3103) (bfe6a57), closes #3102 - cli:
projen newcan take simple list project options (#2368) (4aacce0) - cli: allow running
projenfrom a subdirectory (#2493) (806bd92), closes #2418 - cli: validate options when creating projects from external packages (#2563) (5dbf456), closes #2487
- convert TypescriptConfig to Component and allow comments (#2409) (342a642), closes #2395
- dependabot: add additional dependatbot options (#2777) (6606966)
- docker-compose: Expose YAML file as property (#2866) (7737a96)
- docker-compose: support defining networks (#2406) (bf07061), closes #2397
- docker-compose: support entrypoint (#2506) (ca916e8)
- docker-compose: support service labels (#2407) (40af0e2), closes /docs.docker.com/compose/compose-file/compose-file-v3/#labels-2
- docker: suport platform in docker-compose (#2868) (34d6497)
- eslint: add additional overrides fields (#2999) (83b412e)
- generic .projenrc.ts file that can be used in non-TS projects (#2521) (53ac035)
- github: add createPullRequest Workflow Action to create PRs without using a patch (#2597) (6a6ef63)
- github: add dependabot options: assignees, groups, allow (#2787) (3db1a5b)
- github: add support for the 'strategy' property in reusable workflows (#2433) (e52fd32)
- github: add support for workflows run-name (#2424) (9637ab6)
- github: allow specifying permission scope for app token (#2380) (6a86f86)
- github: allow workflow action versions to be set (#2439) (1bca225), closes #1844 #1702
- github: expose GitHub Actions workflow helpers (#2595) (ea80db1)
- github: require contributor statement on PRs (#2892) (19ed699)
- github: support all crud operations for github-workflow jobs (#2486) (c319220)
- github: support merge_group workflow trigger (#2430) (a0642c8)
- gitlab: add id_tokens field to gitlab ci job interface (#2910) (3b0d106)
- gitlab: support fallback-keys (#2991) (080992e), closes #2960
- gitlab: updates to configuration model (#2992) (f251b79)
- ignore-file: Add support for preserving comments/blank lines (#2501) (2ec5476)
- introduce
YARN_CLASSICandYARN_BERRYNodePackageManager options (#3014) (3273150), closes #2980 /github.com/projen/projen/issues/2980#issuecomment-1759324495 - java: expose readonly maven packaging dist dir (#2624) (1d95408)
- javascript: add
addScriptstoNodeProject(#2562) (1832fa5) - javascript: add workflowPackageCache (#2709) (0692b5d), closes #1439 #2690
- javascript: generic
tryResolveDependencyVersionnode-package method. (#2634) (f153acc), closes /github.com/projen/projen/pull/2607#discussion_r1177611408 - javascript: implement additional manifest resolution strategies for packages with no default or package.json exports. (#2681) (3b56d70), closes #2674
- javascript: Jest config support for addSetupfile() addSetupAfterEnv() (#2516) (31a5a61), closes 1#diff-c06825c87bcdea4969ddb2e9e7605abae42ff155b190718d528f8c4163ed6e40L19 #2515
- jest: convert Jest to Component (#2395) (97037a4), closes /github.com/projen/projen/pull/1671/files#diff-02bcf880af61bcbdba8cd4974d4a8ac84d32fcc0d4f4fb08d05cc053d3176c42 /github.com/projen/projen/blob/main/src/javascript/typescript-config.ts#L405
- jsii: new
JsiiProjects default to version~5.0.0(#2598) (ea905c0) - jsii: support for setting new
jsiiVersion(#2539) (c29959d), closes #2264 #2165 - json-patch: each
ObjectFile.patch()is an atomic operation and new failure behaviors forJsonPatch.test()(#2997) (316a3e4) - license: add AGPL-3.0-or-later (#2744) (d533b21)
- node-package: Added ability to set pnpm version for action-setup (#2482) (ce0d134)
- node-package: added bun as a package manager (#2985) (2f52374)
- node-project: use resolution-mode=highest for pnpm by default (#2632) (37983be), closes #2628
- node: add support for using Yarn2 package manager (#2426) (8eacbd2), closes #2285
- node: default to Node.js 18.x (#2984) (979d0a1), closes #2979
- node: default to node16 and remove
jsii/superchainfrom workflows (#2510) (978a4ea), closes #2094 aws/aws-cdk#8799 #2094 #1065 - project: public subprojects property (#2655) (7406f69), closes #1433
- Projects and Components are Constructs (#2974) (34edf99), closes #1763
- publish: add ability to create post publish Job steps (#2885) (e93fadd)
- python: python executable can be set to any path (#2661) (d4493bc), closes #2300
- python: upgrade pytest default version (#3084) (829633d)
- release: support
minorVersioninreleaseBranchesto release patches for older major versions (#2821) (9da2c1c), closes #2813 - release: support specifying which commits should be considered to cause a new release (#2758) (31951f8), closes #2179 #2751
- smithy-build: support for sources (#2732) (78bc1a1)
- smithy-build: support maven section for vscode smithy plugin (#2412) (e969cc2)
- subproject: call the default task of the root project for synth from subprojects (#2503) (5ecc416), closes #2497
- tasks: add conditions to task steps (#2686) (6e56e3c)
- tasks: Add support for environment variables in task steps (#2663) (2fbd2e6)
- tasks: getter to return all env variables (#2765) (6393fd8), closes #2704
- tasks: support fixed arg lists for better task reusability (#2594) (4acb095)
- task: support adding condition to task (#2694) (f69430b)
- typescript: add
disableTsconfigDevproperty to not generate thetsconfig.dev.json(#2569) (800ab1a) - typescript: Added missing TypeScript compilerOption parameters (#2920) (42146f3)
- typescript: new typescript projects use
projenrcTsby default (#2599) (73aff3a) - typescript: pass
--swctots-nodein default task (#2677) (4b7272f), closes #2676 - typescript: support
importsNotUsedAsValues(#2520) (f5c18d8) - typescript: support
noImplicitOverride(#2442) (48a1402) - typescript: TypeScript TSConfig 5.0+ parameters, support for TSConfig extends. (#2607) (a961228)
- upgrade-dependencies: allow customizing dependency types and semantic commit (#2804) (e5e8114), closes /github.com/projen/projen/blob/2259df0eb7aea3f79e6aa97ede751c414bbdab97/src/version.ts#L131
- upgrade-dependencies: allow to configure version upgrade
targetandsatisfyPeerDependencies(#2883) (ebd75ce) - upgrade-dependencies: switch to single commands that only use
--filter(#2845) (0063756), closes /github.com/projen/projen/blob/main/src/javascript/upgrade-dependencies.ts#L36 /github.com/projen/projen/blob/main/src/javascript/upgrade-dependencies.ts#L43 /github.com/projen/projen/blob/main/src/javascript/upgrade-dependencies.ts#L97 - vscode: expose configuration files as
.fileproperty (#2998) (c1d47cd) - vscode: support dev container features (#2559) (396b0e5)
- yarn: add common Yarn Berry paths to gitattributes (#3092) (b48dd96), closes #2980
Bug Fixes
-
add missing properties for tsconfig.json types (#2387) (459e460)
-
auto-merge: Mergify is not merging pull requests (#2517) (25add2c)
-
awscdk: AWS SDK v2 is not available for node18.x runtime (#2369) (564341a)
-
builtins: command fails when node path contains spaces (#3104) (b2e5bb6), closes #3101
-
Cannot find module 'projen' or its corresponding type declarations (#2617) (fea154e), closes #2616
-
cli: command suggestion prevents use of external projects (#2557) (ca4fe7b), closes #2093
-
cli: improved error messages for
newcommand (#2650) (fb54d08), closes #2649 -
cli: pass through --help flag for tasks that receive args (#3046) (7655012)
-
construct tree not used internally (#3061) (b9c68ea), closes #3056
-
ensure env command is package manager specific (#2653) (edb9f15)
-
eslint: deprecate
lintProjenRcFilein favor of explicitly defining rules viaProjenrc(#2507) (a5f6f81) -
eslint: explicit dependency on eslint-import-resolver-node is not required (#3100) (12fe39a), closes /github.com/depcheck/depcheck/blob/adfeb8ebf64758c2adade68361ccc3f95f05c67a/src/special/eslint.js#L161-L166
-
eslint: remove json-schema redundant dependency (#2394) (47842bb), closes /github.com/projen/projen/blob/83e3a5dba5d6bd0f1bf3f0b5b15e6ac245fa7526/src/javascript/eslint.ts#L163
-
file: annotate generated in sub-project creates incorrect patterns (#2561) (41039fd), closes #2560
-
file: marker notice is referencing the wrong projenrc file (#2498) (f2e94d4)
-
github:
RUN_URLin workflow created PR does not use GitHub enterprise URL (#2767) (fd1bdf3) -
github: extend PullRequestOptions to include PushOptions (#2511) (945565d)
-
github: untrusted input should only be used as action input or env variable (#2647) (906fa85)
-
gitlab:
artifacts:reports:coverage_reportreplaces deprecatedartifacts:reports:cobertura(#2683) (bb4dd8d) -
gitlab: add uppercase support for idTokens (#2922) (f867995)
-
gitlab: allow setting of variables from constructor (#2445) (af0b09d), closes #2323
-
javascript: codeartifact repo containing a dash (
-) not detected (#2706) (c9a01d7), closes #2707 -
javascript: correct
TypeScriptCompilerOptions.emitDeclarationOnlyfromtrue->boolean(#2701) (7d1af8e) -
javascript: do not rely on
package.jsonbeing a valid entrypoint for dependency resolution. (#2645) (a14bce1), closes #2644 -
javascript: Empty pnpm object in subprojects (#3072) (9dd309c), closes #3071
-
javascript: workflowPackageCache doesn't work with pnpm (#2711) (b95d8f7), closes #2710
-
jest: cannot set
presetandglobalsconfig when using in a typescript project (#2567) (d356dda) -
jsii: jsii-docgen uses incompatible version of jsii-rosetta (#2774) (3d548be)
-
new: cannot create a new project if the path has a space (#2444) (3639656), closes #2443
-
new: cli fails on windows with RangeError (#2575) (fbf4642), closes #2418 #2574
-
new: projen new --from fails with "Unable to resolve package name from spec" error with "save=false" in .npmrc (#2844) (eda3c14), closes #2837
-
new: unable to use enum properties when creating external projects (#2435) (de2f118), closes #1932
-
node-package: components cannot change deps at preSynthesize stage (#2964) (5823491)
-
node-project: updated code artifact login script to work for node version above 16 (#2840) (9d6a55f), closes /docs.npmjs.com/cli/v7/using-npm/changelog#v7111-2021-04-23
-
node: CodeArtifact auth with GitHub OIDC is missing workflow permissions (#2399) (3010e78)
-
node: NpmConfig component is created even when not used (#3028) (683b4b1), closes #2638 #2635
-
node: print PATH without escaping double quotes (#2719) (111f56f), closes #981
-
node: typesVersions is added by jsii and removed by projen (#2603) (3c28310)
-
node: Upgrade Workflow is missing id-token permission when GitHub OIDC configured (#2537) (f934170), closes #2399
-
node: yarn fails with
projen has unmet peer dependency "constructs@^10.0.0"(#3037) (7d0869d) -
node: yarn fails with projen has unmet peer dependency "constructs@^10.0.0" (second attempt) (#3039) (7052082)
-
object-file: addToArray overrides all previous calls on non-existent array (#3087) (b7cf214)
-
object-file: allow boxed primitives, Set, Map and RegExp in values (#3016) (5ca5f6e)
-
prettier overrides types uses wrong field name (#2386) (7fe5278)
-
projen cannot be used with node "< 16.0.0" (#2547) (6414db3)
-
python: creation of PythonProject with poetry (#2375) (c28d718), closes #1863
-
python: honour sample option for pytest sample code (#3095) (243ecff), closes #3094
-
python: unescape poetry version metadata in pyproject.toml (#2602) (9539c70), closes #2601
-
release: bump does not keep a newline at the end of version file (#2747) (53f4224)
-
release: first release ignores minMajorVersion (#3081) (c630d31)
-
release: incorrect prerelease version when there is a regular version (#2609) (95f925e)
-
release: selective bump ignores commits with 'r' and 'n' (#2768) (195aae2)
-
remove refactor prefix from docs (#2401) (c5ff81c), closes /github.com/projen/projen/blob/main/.github/workflows/pull-request-lint.yml#L24-L27
-
renovatebot: cannot use file override for renovate.json5 (#2843) (12ddafd)
-
sample-file: unable to create empty sample directory (#2656) (38162c2), closes #1990
-
subprojects: unnecessary use of
cdwhen spawning default task of root project (#2542) (7c3fc85) -
typescript-config: add
typesanddeclarationsMapmissed fields (#3000) (2854309) -
typescript:
[@typescript-eslint](https://github.com/typescript-eslint)packages are incompatible with ts5.2 (#2888) (f743730) -
typescript:
jestConfig.testMatchis ignored (#2736) (c8fff7f), closes #2733 -
typescript: bump @types/node version to 18 (#3076) (0c574bd)
-
typescript: support
jsxImportSourcein TypescriptConfig (#2550) (44d96b8) -
upgrade-dependencies: upgrade command doesn't consider requested types (#2835) (30f41cd)
-
xml: upgrade xmlbuilder2 to version ^3.1.1 (#2669) (9be5393), closes /github.com/nodeca/js-yaml/blob/9586ebe23298427d26b3479979bd6499bf3a14c2/CHANGELOG.md#3141---2020-12-07
-
yarn: npmrc and yarnrc cannot be set to the same value (#3091) (4a2a34e), closes #3048
-
yarn: wrong upgrade command for Yarn Berry (#3088) (86aba40), closes #0 #0 #0 #2980