`@actions/core` support tree shaking when bundled in a GitHub Action.
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.
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
uuidwithnode:crypto
Hello @actions/actions-runtime, Is someone still working on this instead of using fork package?
@kamontat Should we submit a ADR as part of the Enhancements and Feature Requests to progress this issue?
Hi @robherley, I saw that you is a @actions engineers. Do you have any suggestion to improve this issue.