deno-outdated
Pins your dependencies to the latest version & updates existing ones.
deno install --allow-read=./ --allow-net --allow-write=./ -f -n=deno-outdated https://deno.land/x/deno_outdated/cli.ts
Or, add it to your deno.json's (or deno.jsonc) tasks:
"update": "deno run --allow-read=./ --allow-net --allow-write=./ https://deno.land/x/deno_outdated/cli.ts",
You can even add a github action: https://github.com/LeoDog896/deno-outdated/blob/main/.github/workflows/update.yml
Flags
-q, --quiet
: Silence CLI output-d, --debug
: Add extra information to see scanning-i, --ignore [files...]
: Ignore certain files for formatting-c, --check
: Check files for outdated dependencies without updating them
Ignore
You can ignore updating for a line with i-deno-outdated
, for example:
import { assert } from "https://deno.land/std@0.146.0/testing/asserts.ts" // i-deno-outdated
const source = `
const x = 'https://deno.land/std@0.146.0/testing/asserts.ts'; ${"i-deno-outdated" && ""}
const x = 'https://deno.land/std@0.146.0/testing/asserts.ts' // i-deno-outdated ";
`;
Currently works with:
(Want to add more? Contribute to regex.ts
)
UDD?
What's the difference between this andThis tool aims to be similar to deno native tools such as deno fmt
and
deno lint
, or aka shellable
Internal layout
Updating works by finding URLs in a source file, removing their version specifier, and redirecting it to the latest one.
This is split into different stacking modules:
Layer 1:
- Redirect (
redirect.ts
) finds any simple redirects in that URL. - Removal (
removal.ts
) removes the version part of a URL. This is dependent on the vendor (deno.land/x, esm.sh).
update.ts
)
Layer 2: (This updates a URL to its latest known version, if any.
change.ts
)
Layer 3 (This is the API for the CLI app, and it allows you to scan files for outdated dependencies and update them.
cli.ts
)
Layer 4 (This wraps everything around with cliffy for a nice CLI app.