Skip to content

Releases

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 17 Nov 09:03
095143c

0.9.0 (2023-11-17)

⚠ BREAKING CHANGES

  • json-patch: A failure of JsonPatch.test does not fail synthesis anymore. To preserve previous behavior, pass TestFailureBehavior.FAIL_SYNTHESIS as third parameter to the JsonPatch.test call.
  • json-patch: Calls of JsonPatch.test are now only relevant to the scope of the list of patches passed to ObjectFile.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 all JsonPatches in a single call of ObjectFile.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 from NodePackage. It should never have been used. Instead, configure the appropriate depsUpgradeOptions 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.
  • 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 and JestConfigOptions.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 required Projenrc component to the project:
declare subproject: typescript.TypeScriptProject;

new typescript.Projenrc(subproject);

Features

Read more

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 16 Jan 20:00
e9ce56a

0.8.0 (2023-01-16)

⚠ BREAKING CHANGES

  • 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 or package-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 when alwaysUpdateSnapshots is enabled (default is enabled). This task was exactly the same as test which can be used instead. Alternatively set alwaysUpdateSnapshots to false to change the behavior of test and add an explicit test: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 in buildWorkflow) 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
  • release: existing tags for prerelease not respected (projen#2098)
  • add Project.commitGenerated prop (projen#1972)
  • cdk8s: * python: PytestSample now requires an explicit moduleName, as part of the new options: PytestSampleOptions parameter (replacing testdir). If you have a PythonProject the module name is available from pythonProject.moduleName.
  • cdk8s: In Cdk8sTypeScriptApp, information about the used cdk8s version are now available from Cdk8sTypeScriptApp.cdk8sDeps.

Features

Bug Fixes

  • JsiiProject does not use workflowRunsOn for workflows (#2075) (9b4704b)
  • awscdk: Export awscdk-deps-py in index (#2108) (561db27)
  • awscdk: fix pytest import path (#2008) (a0c78be)
  • awscdk: test sample code uses imp...
Read more

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 19 Jul 13:14
b962f6a

0.7.0 (2022-07-19)

⚠ BREAKING CHANGES

  • circleci: WorkflowJob no longer has a parameters key, and the parameters key in Job is now an object with description?, type, and default? keys.
  • react: reactTypeDef is no longer exposed on React project types, and ReactTypeDef and ReactTypeDefOptions 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 a SourceCode file instead if you would like to use a managed react type definitions file in your project.

Features

Bug Fixes

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 02 Jun 12:52
3e51bec

0.6.0 (2022-06-02)

⚠ BREAKING CHANGES

  • 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 through githubOptions.projenCredentials.
  • Separate tasks/workflows for upgrading projen (and approving those PRs) are no longer generated by default. autoApproveProjenUpgrades, projenUpgradeAutoMerge, and projenUpgradeSchedulehave been correspondingly removed.
  • stale.yml GitHub workflow is no longer generated as the default behavior in projects. To keep generating it, specify stale: true or initialize a github.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 use FileBase.marker instead. This value will be undefined if the project is being ejected.
  • cdk8s: The import task in the Cdk8sTypeScriptApp project now outputs to the src directory by default instead of the project root.
  • jest: The method jest.addTypeScriptSupport() is no longer available. This code is now inside TypeScriptProject.
  • java: cdkVersion parameter of AwsCdkJavaApp no longer support caret (eg: "^1.136.0" ). That behavior is now controlled on whether cdkVersionPinning is set to true or false.
  • java: addCdkDependency method of AwsCdkJavaApp now expects fully qualified package names (eg: software.amazon.awscdk/aws-lambda).
  • eslint: Prettier configuration is now under a settings option instead (instead of prettierOptions: { bracketSpacing: false }, write prettierOptions: { settings: { bracketSpacing: false } }).
  • prettier: prettier.config is now called prettier.settings and DOES NOT include overrides.
  • node: The prettierIgnoreEnabled option is now under prettierOptions.ignoreFile and can be accessed via prettier.ignoreFile. Similarly, project.addPrettierIgnore() is now project.prettier.addIgnorePattern().
  • workflows: A secret called PROJEN_GITHUB_TOKEN with workflows, packages and repo 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, use package-all or package:LANG for a specific language.
  • NewProject has been renamed InitProject, and NewProjectOptionHints has been renamed InitProjectOptionHints
  • PythonProject is now initialized with a .projenrc.py file by default instead of .projenrc.js.
  • awscdk: LambdaFunction and AutoDiscover now requires cdkDeps so they can interact with CDK version manager.
  • awscdk: The cdkVersion and constructsVersion options are now semver ranges and not just specific versions. To enable the previous behavior, use a caret prefix ^.
  • awscdk: LambdaFunction and AutoDiscover now requires cdkDeps 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 in package.json.
  • workflow.addJobsLater() is no longer supported. Use postSynthesis 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. Set publishingTasks: true to create them.
  • awscdk-construct: cdkVersion default value updated to 2.0.0
  • cdkAssert deprecated and default changed to false
  • new property cdkAssertions added and defaulted to true
  • awscdk-construct: awscdk.AutoDiscover and awscdk.IntegrationTest now require tsconfigPath.
  • dependency cycles between submodules in Python and Go (projen#1286)
  • cdk8s: cdk8s-plus is not included automatically in cdk8s project. Users need to add this dependency explicitly.
  • awscdk: AutoDiscover now requires testdir.
  • node: minor tweaks of the LambdaFunction and Bundler APIs.
  • It is now impossible to modify the build task. Instead, extend one of the specific build phases (precompile, compile, post compile, test and package). To access these tasks use project.xxxTask.
  • The compileBeforeTest option in TypeScriptProject 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.
  • awscdk: CdkApprovalLevel is now awscdk.ApprovalLevel.
  • awscdk: cdkTypeScriptApp.cdkConfig now refers to a awscdk.CdkConfig object. To add custom fields to cdk.json use cdkTypeScriptApp.cdkConfig.json.
  • typescript: nodeProject.testCompileTask has been removed.
  • typescript: tsconfig.jest.json and tsconfig.eslint.json are now combined into a single tsconfig.dev.json. You can interact with this file it via the typescriptProject.tsconfigDev property.
  • jest: The method generateTypescriptConfig() has been replaced with addTypeScriptSupport().
  • project.github.workflows has been renamed project.github.workflowsEnabled - project.github.workflows now returns an array of all GithubWorkflow instances in the project.
  • 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 benisrae@amazon.com

  • nextjs: Removed web.NextJsTypeDef component. This file is automatically managed by Next.js - delete the one created by projen and let it regenerate if you run into errors.
  • auto-merge: AutoMerge now expects a GitHub component as its first argument, and no longer requires Mergify to be provided.
  • Publisher is now release.Publisher
  • Task categories have been removed.
  • projen new: projen new will no longer ask you if you want to create a git repository nor push the initial commit to github. By default, it will create a repo and a commit (which you will need to push yourself). Use --no-git to disable.
  • node: DependabotOptions.autoMerge was removed. Pass project.autoApprove.label into DependabotOptions.labels instead. In addition, projenUpgradeAutoMerge now defaults to false.
  • release: The releaseWorkflows is now a map instead of an array.
  • release: The initialVersion option has been removed. The default is v0.1.0 or vMM.0.0.
  • project: The mergifyAutoMerge option in NodeProjectOptions
    has been removed. To auto merge PRs, use the 'auto approve'
    functionality via the autoApproveOptions option.
  • release: task.toShellCommand() has been removed, as well as the option to render npm scripts as shell commands. Maintaining this task rendition is too expensive and limits the ability to expand the task system.
  • tasks: The Task initializer no longer takes Tasks as the first argument (no longer needed).
  • node: The npmTaskExecution option has been removed.
  • license: The initializer of the License now takes spdx through the options struct instead of a positional argument. Additionally, an error is thrown if MIT license is selected but the copyrightOwner is not provided (because it is required in the license text).
  • github: the GitHub Workflow triggers and job
    keys now use camelCase instead of snake_case or
    kebab-case.
  • version numbers are now maintained through git tags instead of version.json. This file should be deleted alongside the CHANGELOG.md file. Change log entries are now included inside a GitHub Release.
  • @projen rebuild is no longer supported due to a security issue.
  • as we migrate the default value of defaultReleaseBranch from master to main, this option will be required and an error will be printed if the value is not set. We will make this optional in a future release.
  • Projects created with projen will now default to using the main branch.
  • GithubWorkflow no longer extends FileBase. Use workflow.file instead to access file properties.
  • project project.tryFindJsonFile() is now deprecated. Use tryFindObjectFile() instead.
  • project The obj field on files is now private. Use file.addOverride() to make changes instead.
  • the java option in jsii projects is now called publishToMaven.
  • node: The libdir, srcdir and testdir options are no longer available in NodeProject. Instead they are available in specific project types like typescript, nextjs and react.
  • the name option is now required for all project types.
  • node: Version.resolveVersion(outdir) is now Version.version.
  • NodeProjectCommonOptions is now NodePackageOptions.
  • all deprecated dependencies APIs have been removed.
warn - PROP projen.NodeProjectCommonOptions.bundledDependencies: has been removed [removed:projen.NodeProjectCommonOptions.bundledDependencies]
warn - PROP projen.NodeProjectCommonOptions.dependencies: has been removed [removed:projen.NodeProjectCommonOptions.dependencies]
warn - PROP projen.NodeProjectCommonOptions.devDependencies: has been removed [removed:projen.NodeProjectCommonOptions.devDependencies]
warn - PROP projen.NodeProjectCommonOptions.peerDependencies: has been removed [removed:projen.NodeProjectCommonOptions.peerDependencies]
warn - PROP projen.NodeProjectOptions.bundledDependencie...
Read more