On this page
deno outdated
Command line usage
deno outdated [OPTIONS] [filters]...
Find and update outdated dependencies. By default, outdated dependencies are only displayed.
Display outdated dependencies:
deno outdated
deno outdated --compatible
Update dependencies:
deno outdated --update
deno outdated --update --latest
deno outdated --update
Filters can be used to select which packages to act on. Filters can include wildcards (*) to match multiple packages.
deno outdated --update --latest "@std/*"
deno outdated --update --latest "react*"
Note that filters act on their aliases configured in deno.json / package.json, not the actual package names: Given "foobar": "npm:react@17.0.0" in deno.json or package.json, the filter "foobar" would update npm:react to the latest version.
deno outdated --update --latest foobar
Filters can be combined, and negative filters can be used to exclude results:
deno outdated --update --latest "@std/*" "!@std/fmt*"
Specific version requirements to update to can be specified:
deno outdated --update @std/fmt@^1.0.2
Dependency management options Jump to heading
--lock
Jump to heading
Check the specified lock file. (If value is not provided, defaults to "./deno.lock").
--no-lock
Jump to heading
Disable auto discovery of the lock file.
Options Jump to heading
--compatible
Jump to heading
Only output versions that satisfy semver requirements.
--latest
Jump to heading
Update to the latest version, regardless of semver constraints.
--recursive
Jump to heading
Short flag: -r
include all workspace members.
--update
Jump to heading
Short flag: -u
Update dependency versions.
Checking for outdated dependencies Jump to heading
The outdated
subcommand checks for new versions of NPM and JSR dependencies
listed in deno.json
or package.json
files, and displays dependencies that
could be updated. Workspaces are fully supported, including workspaces where
some members use package.json
and others use deno.json
.
For example, take a project with a deno.json
file:
{
"imports": {
"@std/fmt": "jsr:@std/fmt@^1.0.0",
"@std/async": "jsr:@std/async@1.0.1",
"chalk": "npm:chalk@4"
}
}
and a lockfile that has @std/fmt
at version 1.0.0
.
$ deno outdated
┌────────────────┬─────────┬────────┬────────┐
│ Package │ Current │ Update │ Latest │
├────────────────┼─────────┼────────┼────────┤
│ jsr:@std/fmt │ 1.0.0 │ 1.0.3 │ 1.0.3 │
├────────────────┼─────────┼────────┼────────┤
│ jsr:@std/async │ 1.0.1 │ 1.0.1 │ 1.0.8 │
├────────────────┼─────────┼────────┼────────┤
│ npm:chalk │ 4.1.2 │ 4.1.2 │ 5.3.0 │
└────────────────┴─────────┴────────┴────────┘
The Update
column lists the newest semver-compatible version, while the
Latest
column lists the latest version.
Notice that jsr:@std/async
is listed, even though there is no
semver-compatible version to update to. If you would prefer to only show
packages that have new compatible versions you can pass the --compatible
flag.
$ deno outdated --compatible
┌────────────────┬─────────┬────────┬────────┐
│ Package │ Current │ Update │ Latest │
├────────────────┼─────────┼────────┼────────┤
│ jsr:@std/fmt │ 1.0.0 │ 1.0.3 │ 1.0.3 │
└────────────────┴─────────┴────────┴────────┘
jsr:@std/fmt
is still listed, since it could be compatibly updated to 1.0.3
,
but jsr:@std/async
is no longer shown.
Updating dependencies Jump to heading
The outdated
subcommand can also update dependencies with the --update
flag.
By default, it will only update dependencies to semver-compatible versions (i.e.
it won't update to a breaking version).
$ deno outdated --update
Updated 1 dependency:
- jsr:@std/fmt 1.0.0 -> 1.0.3
To update to the latest versions (regardless of whether it's semver compatible),
pass the --latest
flag.
$ deno outdated --update --latest
Updated 3 dependencies:
- jsr:@std/async 1.0.1 -> 1.0.8
- jsr:@std/fmt 1.0.0 -> 1.0.3
- npm:chalk 4.1.2 -> 5.3.0
Selecting packages Jump to heading
The outdated
subcommand also supports selecting which packages to operate on.
This works with or without the `--update flag.
$ deno outdated --update --latest chalk
Updated 1 dependency:
- npm:chalk 4.1.2 -> 5.3.0
Multiple selectors can be passed, and wildcards (*
) or exclusions (!
) are
also supported.
For instance, to update all packages with the @std
scope, except for
@std/fmt
:
$ deno outdated --update --latest "@std/*" "!@std/fmt"
Updated 1 dependency:
- jsr:@std/async 1.0.1 -> 1.0.8
Note that if you use wildcards, you will probably need to surround the argument in quotes to prevent the shell from trying to expand them.
Updating to specific versions Jump to heading
In addition to selecting packages to update, the --update
flag also supports
selecting the new version specifying the version after @
.
❯ deno outdated --update chalk@5.2 @std/async@1.0.6
Updated 2 dependencies:
- jsr:@std/async 1.0.1 -> 1.0.6
- npm:chalk 4.1.2 -> 5.2.0
Workspaces Jump to heading
In a workspace setting, by default outdated
will only operate on the current
workspace member.
For instance, given a workspace:
{
"workspace": ["./member-a", "./member-b"]
}
Running
deno outdated
from the ./member-a
directory will only check for outdated dependencies listed
in ./member-a/deno.json
or ./member-a/package.json
.
To include all workspace members, pass the --recursive
flag (the -r
shorthand is also accepted)
deno outdated --recursive
deno outdated --update --latest -r