toolkit icon indicating copy to clipboard operation
toolkit copied to clipboard

`@actions/core` support tree shaking when bundled in a GitHub Action.

Open andykenward opened this issue 2 years ago • 4 comments

Describe the enhancement At the moment, when using @actions/core npm package in your own bundled GitHub action, the bundler is unable to tree shake unused code from @actions/core.

Additional information

If we do the below, it should help most bundlers to determine what can be removed from @actions/core when bundling.

Add to packages/core/package.json

"sideEffects": false,

Arrow Functions

Along with using arrow functions instead of the traditional function expression

export function getInput() {
...
}

to

export const getInput = () => {
...
} 

Entry point

Add a packages/core/src/index.ts entry point that individuals exports.

For example

export {
  addPath,
  exportVariable,
  getBooleanInput,
  getInput,
  getMultilineInput,
  setCommandEcho,
  setOutput,
  setSecret
} from './core'

Circular dependency issue

The 'import' structure also has a circular dependency issue, where files sometimes import each other.

For example core.ts and oidc-utils.ts import each other.

Refactoring the structure of files and function usage would resolve this issue and help with tree shaking when bundling.

andykenward avatar Jun 10 '23 15:06 andykenward

While waiting for this issue to be addressed, I've published a fork of @actions/core as @unlike/github-actions-core that supports

  • NodeJS ^18
  • ES module package.
  • Tree shaking
  • Replaced uuid with node:crypto

andykenward avatar Jun 22 '23 09:06 andykenward

Hello @actions/actions-runtime, Is someone still working on this instead of using fork package?

kamontat avatar Mar 21 '24 03:03 kamontat

@kamontat Should we submit a ADR as part of the Enhancements and Feature Requests to progress this issue?

andykenward avatar Apr 21 '24 10:04 andykenward

Hi @robherley, I saw that you is a @actions engineers. Do you have any suggestion to improve this issue.

kamontat avatar Apr 24 '24 04:04 kamontat