Skip to content

Corepack Support #531

Description

@RichiCoder1

Description:
Support using https://github.com/nodejs/corepack to manage non-NPM package managers.

Ideally in between installing node and bootstrapping the package manager cache, this action:

  • enables corepack (could be a no-op depending on the node version)
  • caches/restores the corepack root
  • runs corepack prepare --active

(after some research, that last one may not necessary but instead makes an implicit step explicit)

This behavior could either be trigged by the presence of the packageManager field in the root package.json (might be suprising), cache: 'auto' as possibly envisioned in #306, or corepack: true

Justification:
Both pnpm and yarn support corepack, and yarn recommendeds corepack for package manager versioning. Currently using corepack with this action will break when using the cache key as this action assumes the appropriate version manager has already been installed. However, you don't necessarily want to bootstrap with corepack until the appropriate node version has been installed and configured.

Related: #530 #182

Are you willing to submit a PR?
Yes

Activity

  1. dmitry-shibanov commented on Jun 28, 2022

    @dmitry-shibanov
    Contributor

    Hello @RichiCoder1. Thank you for your feature request. Actually we had similar proposal to enable corepack by default. I think we should reinvestigate adding corepack support. We'll ping you about its results.

  2. RichiCoder1 commented on Jun 28, 2022

    @RichiCoder1
    Author

    @dmitry-shibanov apologies for not seeing that closed ticket! I very much hope ya'll do. While technically experimental, it's being officially recommended and there's no (current) way to use both this action and corepack without some awkward contortions. Looking forward to the outcome!

  3. self-assigned this
    on Aug 15, 2022
  4. tisonkun commented on Aug 16, 2022

    @tisonkun

    I use corepack locally and hope we can integrate it with GitHub Actions :)

  5. brcrista commented on Aug 16, 2022

    @brcrista
    Contributor

    If I'm understanding correctly, right now you can run setup-node, set up Corepack, and then run the standalone cache action. So is the benefit of this just to be able to do it all inside the setup-node action?

  6. tisonkun commented on Aug 16, 2022

    @tisonkun

    Thank @brcrista ! Could you share a minimal config to achieve this? I may not understand how to set up corepack manually here.

  7. brcrista commented on Aug 16, 2022

    @brcrista
    Contributor

    I don't know either, I was just summarizing my understanding from the issue description.

  8. RichiCoder1 commented on Aug 16, 2022

    @RichiCoder1
    Author

    The semi-simple way w/ caching and something like pnpm would be:

    - run: corepack enable
    - uses: actions/setup-node@v3
      with:
        node-version: 16
        cache: pnpm
    - run: pnpm i

    I think that may be faintly fragile as corepack enable operates on the built in node and not the potentially installed one. It does however fix an issue where setup-node will look for a pnpm exe/cache that doesn't exist yet when setting up cache I think.

  9. RichiCoder1 commented on Aug 16, 2022

    @RichiCoder1
    Author

    @brcrista and your understanding is correct. Ideally with some extra smarts enabled by knowing exactly which packageManager is in use.

  10. dsame commented on Aug 17, 2022

    @dsame
    Contributor

    @RichiCoder1 thanks for you notification, it was a good point to review, but we should not go ahead of nodejs team and turn on corepack by default while it is not default for the nodejs itself.
    The consequences of having corepack enabled are risky for some builds and adding new input is not necessary complication of the action and its documentation.
    In the current state of the corepack to have an explicit simple step enabling the feature seems to be optimal solution.

    I have to reject the feature request and close the issue, but please feel free to reopen it or create new one in case you still have some problems.

  11. jakebailey commented on Aug 17, 2022

    @jakebailey

    That's unfortunate; I avoid using the cache feature of the action because I'm nervous of mixing different major npm versions' caches. Having a corepack opt-in would compose well there, but I guess I'll just keep using the 4 steps (!) of setup-node, enable corepack, get cache location, cache, or keep mixing the npm version into the cache key.

  12. 65 remaining items

  13. rt-joe commented on Dec 2, 2025

    @rt-joe

    And while I'm downvoted into oblivion

    The downvotes aren't because of the provided solution's ineffectiveness (it works) but because of setup-node inability to properly address it.

  14. oleksandr-danylchenko commented on Dec 10, 2025

    @oleksandr-danylchenko

    Thanks, @fulldecent. The following solution worked for my npm setup:

    - name: Setup Node.js
      uses: actions/setup-node@v6
      with:
        node-version-file: .nvmrc
        registry-url: "https://registry.npmjs.org"
        scope: "..."
    
    - name: Enable Corepack
      shell: bash
      run: corepack enable npm
    
    - name: Enable NPM cache
      uses: actions/setup-node@v6
      with:
        cache: npm

    However, what would be the recommended approach for supporting Node 25 in the future?
    It won't supply the corepack anymore. So should I explicitly add the npm i -g corepack before the corepack enable npm?

  15. linghengqian commented on May 24, 2026

    @linghengqian

    I would say that even after all these years, I still oppose adding configuration support for corepack to actions/setup-node. Corepack is not actively maintained and is no longer built into NodeJS.

  16. trivikr commented on May 24, 2026

    @trivikr
    Contributor

    Corepack is not actively maintained

    This statement is incorrect.

  17. linghengqian commented on Aug 13, 2026

    @linghengqian

    Corepack is not actively maintained

    This statement is incorrect.

    According to the decision made in pnpm/pnpm#11732 (comment) , the pnpm community has essentially removed pnpm's support for corepack. I don't see any point in pretending that corepack is still compatible with third-party package managers within its git repository.

  18. zkochan commented on Aug 13, 2026

    @zkochan

    Not only the pnpm community. Yarn as well, they have their new official version switcher: https://v6.yarnpkg.com/concepts/switch

    Please, do not use corepack to install pnpm.

  19. fulldecent commented on Aug 24, 2026

    @fulldecent
    Contributor

    Now that actions/setup-node@v7 is released, Yarn works for me (including cache) with @ildella's approach:

    This should solve @xenoterracide's issue above, and @cowwoc's double setup-node workaround, which was previously best practice.

    # Update this when Yarn no longer recommends Corepack
    # See: https://yarnpkg.com/getting-started/install
    - name: Enable Corepack
      run: corepack enable
    
    - name: Setup Node.js
      uses: actions/setup-node@v7
      with:
        node-version-file: .node-version
        cache: yarn
        cache-dependency-path: yarn.lock
    
    - name: Install dependencies
      run: yarn install --immutable

    I now maintain a repo just for integration testing how Yarn installs on GitHub Actions.


    @oleksandr-danylchenko even though Node.js soon (i.e. next LTS) drops support and pnpm/Yarn deprecate corepack, there is no plan for GitHub runners to drop corepack. It would be responsible if they support corepack at least until actions/setup-node supports all the next generation solutions from these respective package managers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    feature requestNew feature or request to improve the current logicneeds eyes

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions