在此页面上
deno install
命令行用法
deno install [OPTIONS] [cmd]...
在本地项目或全局安装到 bin 目录中安装依赖项。
本地安装
将依赖项添加到本地项目的配置 (deno.json / package.json
) 并在包缓存中安装它们。如果未指定依赖项,则安装配置文件中列出的所有依赖项。如果传递了 --entrypoint
标志,则安装指定入口点的依赖项。
deno install
deno install jsr:@std/bytes
deno install npm:chalk
deno install --entrypoint entry1.ts entry2.ts
全局安装
如果设置了 --global
标志,则将脚本作为可执行文件安装到安装根目录的 bin 目录中。
deno install --global --allow-net --allow-read jsr:@std/http/file-server
deno install -g https://examples.deno.land/color-logging.ts
要更改可执行文件名,请使用 -n
/
--name
:
deno install -g --allow-net --allow-read -n serve jsr:@std/http/file-server
默认情况下,可执行文件名是推断出来的
- 尝试获取 URL 路径的文件名主体。上面的示例将变为
file_server
。 - 如果文件名主体是像
main
、mod
、index
或cli
这样的通用名称,并且路径没有父级,则采用父路径的文件名。否则,使用通用名称。 - 如果结果名称带有
@...
后缀,则将其剥离。
要更改安装根目录,请使用
--root
:
deno install -g --allow-net --allow-read --root /usr/local jsr:@std/http/file-server
安装根目录按优先级顺序确定
--root
选项DENO_INSTALL_ROOT
环境变量$HOME/.deno
如果需要,这些必须手动添加到路径中。
类型检查选项
--check
设置类型检查行为。此子命令默认情况下会进行本地模块的类型检查,因此添加 --check
是多余的。如果提供 "all" 值,则会包含远程模块。或者,可以使用 'deno check' 子命令。
--no-check
跳过类型检查。如果提供 "remote" 值,则会忽略来自远程模块的诊断错误。
依赖项管理选项
--cached-only
要求远程依赖项已缓存。
--frozen
如果 lockfile 过期,则报错。
--import-map
从本地文件或远程 URL 加载 import map 文件。
--lock
检查指定的 lock 文件。(如果未提供值,则默认为 "./deno.lock")。
--no-lock
禁用 lock 文件的自动发现。
--no-npm
不解析 npm 模块。
--no-remote
不解析远程模块。
--node-modules-dir
设置 npm 包的 node modules 管理模式。
--reload
短标志:-r
重新加载源代码缓存(重新编译 TypeScript)无值 重新加载所有内容 jsr:@std/http/file-server,jsr:@std/assert/assert-equals 重新加载特定模块 npm: 重新加载所有 npm 模块 npm:chalk 重新加载特定 npm 模块。
--vendor
切换本地 vendor 文件夹的使用以用于远程模块,以及 node_modules 文件夹以用于 npm 包。
选项
--allow-scripts
允许为给定的包运行 npm 生命周期脚本 注意:脚本仅在使用 node_modules 目录 (--node-modules-dir
) 时执行。
--cert
从 PEM 编码文件加载证书颁发机构。
--config
短标志:-c
配置 deno 的不同方面,包括 TypeScript、代码检查和代码格式化 通常,配置文件将被称为 deno.json
或 deno.jsonc
并自动检测;在这种情况下,此标志不是必需的。
--dev
短标志:-D
添加为开发依赖项。
--entrypoint
短标志:-e
安装指定入口点的依赖项。
--env-file
从本地文件加载环境变量 仅使用给定键的第一个环境变量。现有的进程环境变量不会被覆盖,因此如果环境中已存在同名的变量,则会保留其值。如果您的 .env 文件中存在同一环境变量的多个声明,则应用遇到的第一个声明。这由您作为参数传递的文件的顺序决定。
--force
短标志:-f
强制覆盖现有安装。
--global
短标志:-g
将包或脚本作为全局可用的可执行文件安装。
--location
globalThis.location 的值,供某些 Web API 使用。
--name
短标志:-n
可执行文件名。
--no-config
禁用配置文件的自动加载。
--root
安装根目录。
--seed
设置随机数生成器种子。
--v8-flags
要查看所有可用标志的列表,请使用 --v8-flags=--help
标志也可以通过 DENO_V8_FLAGS 环境变量设置。使用此标志设置的任何标志都会附加在 DENO_V8_FLAGS 环境变量之后。
调试选项
--inspect
在 host:port 上激活检查器 [默认值:127.0.0.1:9229]
--inspect-brk
在 host:port 上激活检查器,等待调试器连接并在用户脚本的开头处中断。
--inspect-wait
在 host:port 上激活检查器,并等待调试器在运行用户代码之前连接。
示例
deno install
使用此命令安装在 deno.json
和/或 package.json
中定义的所有依赖项。
依赖项将安装在全局缓存中,但如果您的项目具有 package.json
文件,则也会设置本地 node_modules
目录。
deno install [PACKAGES]
使用此命令安装特定的包并将它们添加到 deno.json
或 package.json
。
$ deno install jsr:@std/testing npm:express
您还可以使用 deno add
,它是 deno install [PACKAGES]
的别名
如果您的项目具有 package.json
文件,则来自 npm 的包将添加到 package.json
中的 dependencies
中。否则,所有包都将添加到 deno.json
中。
deno install --entrypoint [FILES]
使用此命令安装提供的文件及其依赖项中使用的所有依赖项。
如果您在代码中使用 jsr:
、npm:
、http:
或 https:
说明符,并且想要在部署项目之前缓存所有依赖项,这将特别有用。
import * as colors from "jsr:@std/fmt/colors";
import express from "npm:express";
$ deno install -e main.js
Download jsr:@std/fmt
Download npm:express
如果您想设置本地 node_modules
目录,您可以传递 --node-modules-dir=auto
标志。
某些依赖项可能在没有本地 node_modules
目录的情况下无法正常工作。
deno install --global [PACKAGE_OR_URL]
使用此命令安装提供的包或脚本作为系统上全局可用的二进制文件。
此命令创建一个薄的可执行 shell 脚本,该脚本使用指定的 CLI 标志和主模块调用 deno
。它放置在安装根目录中。
示例
$ deno install --global --allow-net --allow-read jsr:@std/http/file-server
Download jsr:@std/http/file-server...
✅ Successfully installed file-server.
/Users/deno/.deno/bin/file-server
要更改可执行文件名,请使用 -n
/--name
deno install -g -N -R -n serve jsr:@std/http/file-server
默认情况下,可执行文件名是推断出来的
- 尝试获取 URL 路径的文件名主体。上面的示例将变为 'file-server'。
- 如果文件名主体是像 'main'、'mod'、'index' 或 'cli' 这样的通用名称,并且路径没有父级,则采用父路径的文件名。否则,使用通用名称。
- 如果结果名称带有 '@...' 后缀,则将其剥离。
要更改安装根目录,请使用 --root
deno install -g -N -R --root /usr/local/bin jsr:@std/http/file-server
安装根目录按优先级顺序确定
--root
选项DENO_INSTALL_ROOT
环境变量$HOME/.deno/bin
如果需要,这些必须手动添加到路径中。
echo 'export PATH="$HOME/.deno/bin:$PATH"' >> ~/.bashrc
您必须指定将在安装时用于运行脚本的权限。
deno install -g -N -R jsr:@std/http/file-server -- -p 8080
上面的命令创建一个名为 file_server
的可执行文件,该文件以网络和读取权限运行,并绑定到端口 8080。
为了良好的实践,请使用 import.meta.main
惯用法来指定可执行脚本中的入口点。
示例
// https://example.com/awesome/cli.ts
async function myAwesomeCli(): Promise<void> {
// -- snip --
}
if (import.meta.main) {
myAwesomeCli();
}
当您创建可执行脚本时,请务必通过在您的存储库中添加示例安装命令来告知用户
# Install using deno install
$ deno install -n awesome_cli https://example.com/awesome/cli.ts
原生 Node.js 插件
许多流行的 npm 包,例如 npm:sqlite3
或 npm:duckdb
依赖于 “生命周期脚本”,例如 preinstall
或 postinstall
脚本。通常,需要运行这些脚本才能使包正常工作。
与 npm 不同,Deno 默认情况下不运行这些脚本,因为它们可能存在安全漏洞。
您仍然可以通过在运行 deno install
时传递 --allow-scripts=<packages>
标志来运行这些脚本
deno install --allow-scripts=npm:sqlite3
安装所有依赖项并允许 npm:sqlite3
包运行其生命周期脚本.
卸载
您可以使用 deno uninstall
命令卸载依赖项或二进制脚本
$ deno uninstall express
Removed express
$ deno uninstall -g file-server
deleted /Users/deno/.deno/bin/file-server
✅ Successfully uninstalled file-server
有关更多详细信息,请参阅 deno uninstall
页面。