Releases: jumic/projen
Releases · jumic/projen
v0.34.0
0.34.0 (2024-03-03)
⚠ BREAKING CHANGES
- python: Poetry is now required to be at version 1.2.0 or above. Please update Poetry if needed.
- nextjs: Minimum Node version is now 16.14.0 to match Next 13's minimum node version.
- nextjs: Next.js TSConfig
module
is nowesnext
by default, to preserve previous behavior, setmodule
toCommonJS
. - nextjs: Next.js TSConfig
moduleResolution
is nowBUNDLER
by default, to preserve previous behavior, setmoduleResolution
toNODE
. - nextjs: Next.js TSConfig
strict
is now set totrue
by default, to preserve previous behavior, setstrict
tofalse
. - gitlab: current cache definitions will need to be changed into an array or will get a compile time exception.
- python: Python >=3.8 is now required for projen and consequently for all projects. Upgrade to a supported Python version.
- json-patch: A failure of
JsonPatch.test
does not fail synthesis anymore. To preserve previous behavior, passTestFailureBehavior.FAIL_SYNTHESIS
as third parameter to theJsonPatch.test
call. - json-patch: Calls of
JsonPatch.test
are 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 allJsonPatch
es in a single call ofObjectFile.patch
. - gitlab: All
variables
are 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
preSynthesize
handler 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
renderUpgradePackagesCommand
has been removed fromNodePackage
. It should never have been used. Instead, configure the appropriatedepsUpgradeOptions
to 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.
Features
- add runner group support (#2817) (9bdf7d0), closes #2814
- add Yarnrc component for YARN_BERRY (#3048) (7a3883a), closes #2980
- auto-merge: rule name and queue name can be configured (#3135) (da981a3)
- awscdk: add experimental integ-runner support (#2963) (a579d86)
- awscdk: Node.js 20.x runtime (#3124) (917f3a3)
- bundler: add
esbuild
--format
control (#3103) (bfe6a57), closes #3102 - bundler: additional esbuild options and generic escape hatch to pass any options to esbuild (#3366) (482f782), closes #3364
- cdktf: update default constructs version (#3309) (aa8a2e3)
- docker-compose: Expose YAML file as property (#2866) (7737a96)
- docker: suport platform in docker-compose (#2868) (34d6497)
- eslint: add additional overrides fields (#2999) (83b412e)
- github: download artifact workflow step (#3365) (dbe4aeb)
- github: require contributor statement on PRs (#2892) (19ed699)
- gitlab: add gitlab multiple cache support (#3151) (0c8088f), closes #3022
- 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)
- IgnoreFile: allow ignorePatterns to be set via options (#3373) (8c93086)
- introduce
YARN_CLASSIC
andYARN_BERRY
NodePackageManager options (#3014) (3273150), closes #2980 /github.com/projen/projen/issues/2980#issuecomment-1759324495 - java: support for parent POM in maven projects (#3326) (41b610d)
- jest: addModuleNameMappers, addModulePaths, addRoots (#3287) (9436206)
- json-patch: each
ObjectFile.patch()
is an atomic operation and new failure behaviors forJsonPatch.test()
(#2997) (316a3e4) - node-package: added bun as a package manager (#2985) (2f52374)
- node: allow enforcement of licenses used by dependencies (#2614) (7402c57)
- node: default to Node.js 18.x (#2984) (979d0a1), closes #2979
- node: release from CI with npm provenance statements (#3330) (e41812c)
- node: update aws-actions/configure-aws-credentials@v2 to v4 (#3329) (8eb0b03), closes #2932 #3324
- Projects and Components are Constructs (#2974) (34edf99), closes #1763
- publish: add ability to create post publish Job steps (#2885) ([e93fadd](https://g...
v0.33.0
0.33.0 (2023-07-25)
⚠ BREAKING CHANGES
- github: To align the
PullRequestFromPatchOptions
interface with the newly introduced feature, two options have moved:
PullRequestFromPatchOptions.patch.workflowName
->PullRequestFromPatchOptions.workflowName
,PullRequestFromPatchOptions.ref
->PullRequestFromPatchOptions.patch.ref
. - The values of
JestConfigOptions.transforms
andJestConfigOptions.watchPlugins
have 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/superchain
image 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 requiredProjenrc
component to the project:
declare subproject: typescript.TypeScriptProject;
new typescript.Projenrc(subproject);
- python: The default Python version used for Poetry and Setuptools was updated to
>=3.7
as required by each of these packages. - gitlab: GitLab job names from the projen CI configuration will be preserved rather than changed to snake case
- github: If you have customized the
package-python
orpackage-dotnet
jobs of the release workflow, please review the changes for the release of the respective action.
actions/setup-python@v4: https://github.com/actions/setup-python/releases/tag/v4.0.0
actions/setup-dotnet@v3: https://github.com/actions/setup-dotnet/releases/tag/v3.0.0
- github: Requires self-hosted GitHub Actions runners to be updated to version 2.297.0 or greater.
- jest: Removal of
test:update
task whenalwaysUpdateSnapshots
is enabled (default is enabled). This task was exactly the same astest
which can be used instead. Alternatively setalwaysUpdateSnapshots
tofalse
to change the behavior oftest
and add an explicittest:update
task.
fixes projen#1144
Description
- As a lot of users is noticing, updating snapshot in task "test" is a unexpected behavior and it should be separated as "test:update" that already exists
- I believe that snapshot should not be updated in the
buildWorkflow
, because snapshot test is one important way to confirm that the auto updates doesn't break something. Although, I would try to keep the current behavior (updating snapshots inbuildWorkflow
) as a default to avoid breaking changes
Fix
- Deleted "--updateSnapshot" for the task "test"
- Added
alwaysUpdateSnapshots
option to keep the current behavior- Deleted "test:update" if
alwaysUpdateSnapshots
is true because it is confusing that "test:update" is doing the same thing- This can be a breaking change for people currently using "test:update", but I think it is easy enough to migrate to "test" or configuring
alwaysUpdateSnapshots
false, because it's doing almost same thing already
- This can be a breaking change for people currently using "test:update", but I think it is easy enough to migrate to "test" or configuring
- Deleted "test:update" if
- release: existing tags for prerelease not respected (projen#2098)
- add Project.commitGenerated prop (projen#1972)
- cdk8s: * python:
PytestSample
now requires an explicitmoduleName
, as part of the newoptions: PytestSampleOptions
parameter (replacingtestdir
). If you have aPythonProject
the module name is available frompythonProject.moduleName
. - cdk8s: In
Cdk8sTypeScriptApp
, information about the usedcdk8s
version are now available fromCdk8sTypeScriptApp.cdk8sDeps
. - circleci: WorkflowJob no longer has a parameters key, and the parameters key in Job is now an object with
description?
,type
, anddefault?
keys. - react:
reactTypeDef
is no longer exposed on React project types, andReactTypeDef
andReactTypeDefOptions
are deprecated. This file is now created as a sample file so it will be managed by the user (and they can edit it, delete it, etc.) instead of by projen. Create aSourceCode
file instead if you would like to use a managed react type definitions file in your project. - update GitHub actions to recent versions (projen#1890)
- typescript: EslintOptions.lintProjenRc is now a string
- new versions of projen now require node v14, since node v12 reaches EOL on April 30, 2022.
- The deprecated
projenUpgradeSecret
is removed, and GitHub API access is now customizable throughgithubOptions.projenCredentials
. - Separate tasks/workflows for upgrading projen (and approving those PRs) are no longer generated by default.
autoApproveProjenUpgrades
,projenUpgradeAutoMerge
, andprojenUpgradeSchedule
have been correspondingly removed. stale.yml
GitHub workflow is no longer generated as the default behavior in projects. To keep generating it, specifystale: true
or initialize agithub.Stale
component directly.- ReactProject's
eject
task now ejects the project from projen instead of ejecting from React. Project.defaultTask
is now optional as it may be undefined if a project is being ejected.FileBase.PROJEN_MARKER
is now deprecated, please useFileBase.marker
instead. This value will be undefined if the project is being ejected.- cdk8s: The
import
task in theCdk8sTypeScriptApp
project now outputs to thesrc
directory by default instead of the project root.
Features
tryRemoveFile
escape hatch (#1819) (715fcf3)- add
workflowContainerImage
toPublisher
(#2572) (9554bd7) - add Node.js 18 Lambda runtime (#2289) (133b10a)
- add Project.commitGenerated prop (#1972) (b578083)
- Add read permissions for all users (#1825) (a3d58a0), closes #1137
- add smithy build support to projen (#1970) (b962f6a)
- add support for
cp
command on Windows using shx (#2004) (a7058b7) - add support for Git LFS (#2455) (adfcf6c)
- add support for gzip compression in latest jsii/file-redirect s… (#2025) (7a3ba34), closes #2024
- add support for package resolution overrides (#1902) (75d05ef), closes #1854
- added EUPL v1.2 license to license-text (#1745) (20272d8)
- adding cobertura coverage reporter (#1504) (a71ea69)
- Adding notes about forcing release versions (#2070) (274682b)
- adding steps for upgrading project to .ts file (#1995) (10551cf)
- allow build workflow github runner to be customised (#1492) (c9cf97c)
- allow prettier configuration in yaml (#2388) (8cba761), closes /github.com/projen/projen/blob/main/src/javascript/eslint.ts#L85
- awscdk-app-py: adding support for building CDK apps with python (#1579) (0289e61), closes #1577
- awscdk-app: initialize sample code stack names based on project name (#1711) (3605687), closes #1708
- awscdk: add AWS Lambda Extension development support (#1647) (81614ca), closes #1646
- awscdk: add lambda runtime nodejs16.x (#1927) (7330bb8)
- awscdk: allow integration test ...
v0.32.0
0.32.0 (2022-01-03)
⚠ BREAKING CHANGES
- jest: The method
jest.addTypeScriptSupport()
is no longer available. This code is now insideTypeScriptProject
. - java:
cdkVersion
parameter ofAwsCdkJavaApp
no longer support caret (eg:"^1.136.0"
). That behavior is now controlled on whethercdkVersionPinning
is set totrue
orfalse
. - java:
addCdkDependency
method ofAwsCdkJavaApp
now expects fully qualified package names (eg:software.amazon.awscdk/aws-lambda
). - eslint: Prettier configuration is now under a
settings
option instead (instead ofprettierOptions: { bracketSpacing: false }
, writeprettierOptions: { settings: { bracketSpacing: false } }
). - prettier:
prettier.config
is now calledprettier.settings
and DOES NOT includeoverrides
. - node: The
prettierIgnoreEnabled
option is now underprettierOptions.ignoreFile
and can be accessed viaprettier.ignoreFile
. Similarly,project.addPrettierIgnore()
is nowproject.prettier.addIgnorePattern()
. - workflows: A secret called
PROJEN_GITHUB_TOKEN
withworkflows
,packages
andrepo
scopes is now required for all projects. As much as this is a bit of a burden, most projects already have such a token because otherwise projen upgrade workflows cannot really function. - jsii: The
package
task now only produces an npm tarball. To create all language bindings, usepackage-all
orpackage:LANG
for a specific language. NewProject
has been renamedInitProject
, andNewProjectOptionHints
has been renamedInitProjectOptionHints
PythonProject
is now initialized with a.projenrc.py
file by default instead of.projenrc.js
.- awscdk:
LambdaFunction
andAutoDiscover
now requirescdkDeps
so they can interact with CDK version manager. - awscdk: The
cdkVersion
andconstructsVersion
options are now semver ranges and not just specific versions. To enable the previous behavior, use a caret prefix^
. - awscdk:
LambdaFunction
andAutoDiscover
now requirescdkDeps
so they can interact with CDK version manager. - the default version of
@types/node
installed if no
minNodeVersion
is specified on Node projects is now^12
instead of
^14
. - release:
npmDistTag
only effects publishing (and supported for each release branch) setting and so it is no longer set inpackage.json
. workflow.addJobsLater()
is no longer supported. UsepostSynthesis
hooks and call.addJobs()
as needed.publish:xxxx
tasks for automated releases are not defined by default since normally they should only be executed from within workflows. SetpublishingTasks: true
to create them.- awscdk-construct: cdkVersion default value updated to
2.0.0
cdkAssert
deprecated and default changed tofalse
- new property
cdkAssertions
added and defaulted totrue
Features
- allow overriding deps (#1351) (daf0a07), closes #1342
- awscdk-app-ts: add synth:silent cdk task (#1364) (30f92b5)
- awscdk-app-ts: support cdk watch (#1323) (a969ca9)
- awscdk-construct: awscdk-construct used aws-cdk v2 by default (#1228) (9527ba8)
- eslint: use prettier if enabled (#1450) (5d970d8)
- extend prettier support (#1367) (51c1bf1), closes #1318
- GitLab CI model and base classes (#1357) (2ef39f8), closes #137 #942
- init python projects with .projenrc.py (#1346) (a84b57a)
- java: CDKv2 support (#1447) (1020d0a), closes #1446
- jsii: parallelize build of language bindings (#1359) (177ef19)
- node: do run "yarn/npm install" if package.json did not change (#1435) (d193c1c)
- node: package manifest "bugs" field (#1373) (dae6ab4), closes #1369
- projen library in go (#1350) (5862cdf), closes #1344
- pwd artifact (#1384) (d90284c)
- release: allow specifying npm dist-tag per branch (#1314) (78bf2e4)
- release: dry-run (#1363) (47f2be9)
- release: improve performance (#1352) (1f7c302)
Bug Fixes
react
projects witheslint
are broken (#1368) (fb456f8)- awscdk-app-ts: srcdir and testdir are not configurable (#1304) (4d2d4c2)
- awscdk: allow any context record value types (#1390) (b3dee99), closes #1349
- awscdk: integ tests are still not working for libraries (#1302) (fb6fe7d), closes #1300 #1299
- awscdk: issues with CDK v2 libraries and apps (take 2) (#1338) (eb1283f), closes #1327 #1288 #1326 #1173
- awscdk: some issues with CDK v2 (#1327) (61c47b5), closes #1288 #1326 #1173
- build: anti-tamper job is redundant (#1429) (a6cf3b9)
- build: build should fail if mutations were found (#1428) (37e2ed2), closes #1423 #1422
- CDK integration snapshots have local paths when working with assets (#1360) (672e361), closes 40aws-cdk/cdk-integ-tools/lib/integ-helpers.ts#L190-L192
- CDK v2 integration tests should not use v1 feature flags (#1345) (df1cd94), closes #1343
- cleanup: file pruning is too heavy handed (#1306) (7918958), closes #1265
- export testing utilities (#1310) (898dd97)
- jest: tests are...
v0.31.0
0.31.0 (2021-12-07)
⚠ BREAKING CHANGES
- awscdk-construct:
awscdk.AutoDiscover
andawscdk.IntegrationTest
now requiretsconfigPath
. - dependency cycles between submodules in Python and Go (projen#1286)
Features
- allow customising or disabling git-push used by manual release (#1282) (ae786c2), closes #1267
- support specifiying alternative github runner (#1296) (87fbb27), closes #1295
Bug Fixes
- ansi-regex has a security volunerability (CVE-2021-3807) (#1280) (0e8af39)
- awscdk-construct: integration tests cannot be executed (#1300) (604471a), closes #1299
- dependency cycles between submodules in Python and Go (#1286) (a76b087), closes #811
- eslint depends on insecure library (ansi-regex) (#1281) (231e6af)
- github/workflows-model: missing GitHub events (#1297) (0e1ab52)
- jsdom typings override is no longer needed (#1278) (3ccbf15), closes #1264
- passing optional gitPushCommand to publishToGit method (#1293) (0b8ad57), closes #1282
v0.30.0
0.30.0 (2021-12-01)
⚠ BREAKING CHANGES
- cdk8s:
cdk8s-plus
is not included automatically in cdk8s project. Users need to add this dependency explicitly. - awscdk:
AutoDiscover
now requirestestdir
. - node: minor tweaks of the
LambdaFunction
andBundler
APIs. - It is now impossible to modify the
build
task. Instead, extend one of the specific build phases (precompile
,compile
,post compile
,test
andpackage
). To access these tasks useproject.xxxTask
. - The
compileBeforeTest
option inTypeScriptProject
is not supported any more. Tests are always executed after compilation. projenDuringBuild
is no longer supported. Let us know if you have a use case for it that we are not aware of.
Features
- allow customization of versionrc file (#1211) (a6aea5d), closes #1204
- awscdk: integration tests (#1270) (d36d963)
- document AWS cloud development features (#1257) (1563f29)
- enforce conventional commits with PR linter (#1224) (4eeed6c), closes #1188 #1071
- publishing: allow assuming role for AWS CodeArtifact (#1227) (658e904)
- standard build (#1201) (2b38918)
Bug Fixes
- 🐛 update the default CDK version to 1.129.0 (#1184) (4868719)
- awscdk-app-ts: unsetting context when cdk version > 2 (#1247) (c54318d), closes #1205
- cdk8s: deprecate cdk8sPlusVersion option (#1273) (6532fc9), closes #1272
- convert generated lambda paths to posix (#1237) (5e0855f), closes #1234
- force jsdom typings version 27.3.1 (#1268) (cd120cc), closes /github.com/projen/projen/issues/1264#issuecomment-982365744
- lambdas are now produced with posix paths only (#1235) (3b7105f), closes #1234
- node: bundled assets cannot be located during tests (#1200) (6778713)
- README logo url (#1242) (f0ce7ae)
- release.yml cannot be modified with escape hatches (#1255) (d1fd79e), closes #1103
- snapshot resolver not cleaned up (#1275) (1acaeb6)
v0.29.1
v0.29.0
0.29.0 (2021-11-01)
⚠ BREAKING CHANGES
- awscdk:
CdkApprovalLevel
is nowawscdk.ApprovalLevel
. - awscdk:
cdkTypeScriptApp.cdkConfig
now refers to aawscdk.CdkConfig
object. To add custom fields tocdk.json
usecdkTypeScriptApp.cdkConfig.json
. - typescript:
nodeProject.testCompileTask
has been removed. - typescript:
tsconfig.jest.json
andtsconfig.eslint.json
are now combined into a singletsconfig.dev.json
. You can interact with this file it via thetypescriptProject.tsconfigDev
property. - jest: The method
generateTypescriptConfig()
has been replaced withaddTypeScriptSupport()
. project.github.workflows
has been renamedproject.github.workflowsEnabled
-project.github.workflows
now returns an array of allGithubWorkflow
instances in the project.
Features
- awscdk: awscdk-java-app (#1190) (b7753ec), closes #1070
- bump minimum node version to 12.x (#1113) (b493fac)
- create projects programmatically (#1125) (bff7bc8), closes #1081
- node: allow specifying git identity for workflows (#1151) (63f89f0), closes #1147
- prefixes for release tags (#1079) (856a33d)
- release: release triggers (#1047) (180393e), closes #726
- signoff dependency upgrade pr's (#1100) (b9e5a01), closes /github.com/projen/projen/blob/main/src/node-project.ts#L129 /github.com/projen/projen/blob/main/src/node-project.ts#L137
- support alwaysTryTypes config for typescript eslint import resolver (#1192) (8a77752)
- tryFind escape hatch for GitHub workflows (#1105) (28078f8)
- typescript: allow projen .ts files to reside under
projenrc
(#1132) (b9a3f9c) - upgrade: multi branch upgrades (#1112) (903610f)
Bug Fixes
- awscdk-app-ts: error message when cdkVersion isn't specified (#1123) (c4705d2)
- decouple docgen from compile task (#1154) (996f160), closes #1153
- dependabot: undefined variable in ignore version check (#1124) (2c659ec)
- honor outdirectory resolution (#1165) (5e89f58)
- incorrect workflow token (#1148) (a615796)
- make release workflow path separators platform-invariant (#1139) (e4e55b3), closes #1138
- new: Unable to use external project from many package specs (#1094) (7e91899), closes #879
- new: Use NPM for
projen new
instead of Yarn (#1077) (083d4ea), closes #885 - outdated Java group ID for projen (#1093) (c744074)
- pnpm not installed in workflows (#1054) (cb0214a), closes #1026
- release: fix changelog release tag parsing (#1119) (5659d5f)
- release: prefix env variable clash (#1117) (32317be)
- release: update changelog task env var (#1116) (682432c), closes /github.com/projen/projen/pull/1047#issuecomment-933883743
- release: update-changelog pull from version file (#1130) (c4c473e)
- require node.js ^12.7.0 instead of ^12.13.0 (#1122) (160dad4)
- speed up discovery of external types (#1104) (77d90e0), closes #1101
- typescript: redundant compilation of tests (#1152) (cdbbe29), closes #401 #1143
- upgrade: some dependencies are not upgraded when shared between different dependency types (#1111) (acd238e)
v0.28.0
0.28.0 (2021-09-18)
⚠ BREAKING CHANGES
- The default minimum Node.js version for node projects is now 14.x since Node 10.x is now end-of-life. Therefore we also change the default build container for JSII projects is now jsii/superchain:node14.
Co-authored-by: Elad Ben-Israel [email protected]
Features
- addOverride can override array elements (#1067) (4422a24)
- contributors: codebase walkthrough video (#1064) (a1da330)
- eslint: import aliasing (#1048) (634d972)
- release: Create an issue on failed releases (#1009) (4f7719f)
- split Project and GitHubProject (#1027) (4f355cc), closes #1011
- tsconfig: expose "baseUrl" and "paths" in compilerOptions (#1073) (cfeadb8)
- tsconfig: expose tsconfig: emitDecoratorMetadata prop (#1066) (16c116b)
Bug Fixes
- Add ability to override default python version for Poetry projects (#1028) (6093315)
- collocated TypeScript compiler files not ignored (#1022) (98e895b), closes #1020
- node 10.x is end-of-life so default to 14.x (#1052) (581ee96), closes #1034 #1050
- projen incompatible with node 10.x (#1063) (9587aec)
- pullRequestTemplateContents was using the wrong type (#1069) (79c3968)
- release workflow jobs not idempotent (#1033) (cc29bb2)
- release workflow still not idempotent (#1058) (402cf6b), closes #1056
- unclear property for detecting failed releases (#1035) (d10928e)
- unclear property for detecting failed releases (#1035) (#1042) (f48b872)
- Write poetryOptions to pyproject.toml (#1030) (c28ffba)