Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cache deno modules #31

Open
jacque006 opened this issue Jun 9, 2022 · 2 comments
Open

Cache deno modules #31

jacque006 opened this issue Jun 9, 2022 · 2 comments

Comments

@jacque006
Copy link

It would be nice if this action had a way to cache deno modules that had been downloaded in previous runs, similarly to https://github.com/actions/setup-node#caching-global-packages-data

The cache looks like it is easy enough to find https://deno.land/manual/linking_to_external_code#linking-to-third-party-code . However, I'm unsure what the key/hash for lookup and download would be to:

  • Determine if a module had changed in any file.
  • Lookup existing module caches.

This part is easier with a NodeJS package manager such as npm or yarn as you can just use a hash of the lockfile.

@jespertheend
Copy link

I bet there's some way to do this using https://github.com/actions/cache, but I'm not sure what would be the right paths for hashFiles() and path

@GJZwiers
Copy link

GJZwiers commented Aug 9, 2022

I bet there's some way to do this using https://github.com/actions/cache, but I'm not sure what would be the right paths for hashFiles() and path

It can be achieved by pointing path to the location of DENO_DIR and calling hashFiles() on the lockfile that is written with deno cache --lock=<file> --lock-write. For example:

env:
  DENO_DIR: my_cache_directory

steps:
  - name: Cache Deno dependencies 
    uses: actions/cache@v2
    with:
      path: ${{ env.DENO_DIR }}
      key: ${{ hashFiles('lock.json') }}

Having an option in setup_deno to cache could be useful, although there is perhaps more diversity in what lockfile names people use compared to Node where it is almost always package-lock.json, npm-shrinkwrap.json or yarn.lock.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants