semantic-release / release-notes-generator

:clipboard: semantic-release plugin to generate changelog content with conventional-changelog
MIT License
309 stars 47 forks source link

custom `writerOpts` `transform` no longer able to modify section titles #658

Closed Shereef closed 4 months ago

Shereef commented 4 months ago

Hello!

I have https://github.com/Shereef/release-notes-generator-issue repo to show the issue

When we have custom writer opts on v14 it is no longer able to modify the section titles (or anything for that matter)

You can see in the logs here:

[4:30:18 PM] [semantic-release] › ✘  An error occurred while running semantic-release: Error: Cannot modify immutable object.
    at Object.set (file:///opt/hostedtoolcache/node/20.14.0/x64/lib/node_modules/@semantic-release/release-notes-generator/node_modules/conventional-changelog-writer/dist/commit.js:11:19)
    at transform (/home/runner/work/release-notes-generator-issue/release-notes-generator-issue/.releaserc.writerOpts.js:4:19)
    at transformCommit (file:///opt/hostedtoolcache/node/20.14.0/x64/lib/node_modules/@semantic-release/release-notes-generator/node_modules/conventional-changelog-writer/dist/commit.js:29:23)
    at write (file:///opt/hostedtoolcache/node/20.14.0/x64/lib/node_modules/@semantic-release/release-notes-generator/node_modules/conventional-changelog-writer/dist/writers.js:39:28)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async nextAsync (node:internal/streams/from:182:33) {
  pluginName: '@semantic-release/release-notes-generator'
}
Error: Cannot modify immutable object.
    at Object.set (file:///opt/hostedtoolcache/node/20.14.0/x64/lib/node_modules/@semantic-release/release-notes-generator/node_modules/conventional-changelog-writer/dist/commit.js:11:19)
    at transform (/home/runner/work/release-notes-generator-issue/release-notes-generator-issue/.releaserc.writerOpts.js:4:19)
    at transformCommit (file:///opt/hostedtoolcache/node/20.14.0/x64/lib/node_modules/@semantic-release/release-notes-generator/node_modules/conventional-changelog-writer/dist/commit.js:29:23)
    at write (file:///opt/hostedtoolcache/node/20.14.0/x64/lib/node_modules/@semantic-release/release-notes-generator/node_modules/conventional-changelog-writer/dist/writers.js:39:28)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async nextAsync (node:internal/streams/from:182:33) {
  pluginName: '@semantic-release/release-notes-generator'
}

This happens because in conventional-changelog-writer/dist/commit.js it calls the writer opts transform function with transform(preventModifications(commit), context, options) so when we try to modify it breaks

What is the new recommended way to do this?

Shereef commented 4 months ago

Answered here