本页内容
deno.json
配置文件
Deno 支持一个配置文件,允许您自定义内置的 TypeScript 编译器、格式化程序和 linter。
配置文件支持 .json
和 .jsonc
扩展名。 从 v1.18 开始,Deno 会自动检测 deno.json
或 deno.jsonc
配置文件,如果它在您的当前工作目录或父目录中。--config
标志可用于指定不同的配置文件。
- 在 Deno v1.23 之前,您需要提供一个显式的
--config
标志。 - 从 Deno v1.34 开始,
include
和exclude
字段支持 glob 模式。您可以使用*
匹配任意数量的字符,?
匹配单个字符,**
匹配任意数量的目录。
imports
和 scopes
跳转到标题
从 1.30 版本开始,deno.json
配置文件充当 导入映射,用于解析裸规范。
{
"imports": {
"std/": "https://deno.land/[email protected]/"
},
"tasks": {
"dev": "deno run --watch main.ts"
}
}
有关导入映射的更多信息,请参阅 导入映射部分。
然后您的脚本可以使用裸规范 std
import { assertEquals } from "std/assert/mod.ts";
assertEquals(1, 2);
顶级 deno.json
选项 importMap
以及 --importmap
标志可用于在其他文件中指定导入映射。
tasks
跳转到标题
类似于 package.json
的 script
字段。本质上是命令行调用的快捷方式。
{
"tasks": {
"start": "deno run -A --watch=static/,routes/,data/ dev.ts"
}
}
使用 deno task start
将运行该命令。另请参阅 deno task
。
lint
跳转到标题
用于 deno lint
的配置。
{
"lint": {
"include": ["src/"],
"exclude": ["src/testdata/", "src/fixtures/**/*.ts"],
"rules": {
"tags": ["recommended"],
"include": ["ban-untagged-todo"],
"exclude": ["no-unused-vars"]
}
}
}
fmt
跳转到标题
用于 deno fmt
的配置
{
"fmt": {
"useTabs": true,
"lineWidth": 80,
"indentWidth": 4,
"semiColons": true,
"singleQuote": true,
"proseWrap": "preserve",
"include": ["src/"],
"exclude": ["src/testdata/", "src/fixtures/**/*.ts"]
}
}
lock
跳转到标题
用于指定锁定文件的不同文件名。默认情况下,deno 将使用 deno.lock
并将其放置在配置文件旁边。
nodeModulesDir
跳转到标题
用于在使用 npm 包时启用或禁用 node_modules
目录。
npmRegistry
跳转到标题
用于为 npm 规范指定自定义 npm 注册表。
compilerOptions
跳转到标题
deno.json
也可以充当 TypeScript 配置文件,并支持 大多数 TS 编译器选项。
Deno 鼓励用户使用默认的 TypeScript 配置,以帮助共享代码。
另请参阅 在 Deno 中配置 TypeScript。
unstable
跳转到标题
unstable
属性是一个字符串数组,用于配置应为您的程序启用哪些不稳定的功能标志。 了解更多。
include
和 exclude
跳转到标题
许多配置(例如 lint
、fmt
)都有一个 include
和 exclude
属性,用于指定要包含的文件。
include
跳转到标题
仅包含此处指定的路径或模式。
{
"lint": {
// only format the src/ directory
"include": ["src/"]
}
}
exclude
跳转到标题
此处指定的路径或模式将被排除。
{
"lint": {
// don't lint the dist/ folder
"exclude": ["dist/"]
}
}
这比include
具有更高的优先级,如果路径在include
和exclude
中都匹配,则exclude
将胜出。
{
"lint": {
// only lint .js files in the src directory
"include": ["src/**/*.js"],
// js files in the src/fixtures folder will not be linted
"exclude": ["src/fixtures"]
}
}
您可能希望排除一个目录,但包含一个子目录。在 Deno 1.41.2+ 中,您可以通过在更通用的排除项下方指定一个否定 glob 来取消排除更具体的路径。
{
"fmt": {
// don't format the "fixtures" directory,
// but do format "fixtures/scripts"
"exclude": [
"fixtures",
"!fixtures/scripts"
]
}
}
顶层 exclude
跳转到标题
如果您有一个永远不想让 Deno 格式化、lint、类型检查、在 LSP 中分析等的目录,请在顶层排除数组中指定它。
{
"exclude": [
// exclude the dist folder from all sub-commands and the LSP
"dist/"
]
}
有时您可能会发现您想取消排除在顶层排除中排除的路径或模式。在 Deno 1.41.2+ 中,您可以通过在更具体的配置中指定一个否定 glob 来取消排除路径。
{
"fmt": {
"exclude": [
// format the dist folder even though it's
// excluded at the top level
"!dist"
]
},
"exclude": [
"dist/"
]
}
发布 - 覆盖 .gitignore 跳转到标题
.gitignore 会被不稳定的 deno publish
命令考虑在内。在 Deno 1.41.2+ 中,您可以使用否定排除 glob 来选择退出在 .gitignore 中忽略的排除文件。
dist/
.env
{
"publish": {
"exclude": [
// include the .gitignored dist folder
"!dist/"
]
}
}
或者,在 "include"
中显式指定 gitignored 路径也可以。
{
"publish": {
"include": [
"dist/",
"README.md",
"deno.json"
]
}
}
完整示例 跳转到标题
{
"compilerOptions": {
"allowJs": true,
"lib": ["deno.window"],
"strict": true
},
"lint": {
"include": ["src/"],
"exclude": ["src/testdata/", "src/fixtures/**/*.ts"],
"rules": {
"tags": ["recommended"],
"include": ["ban-untagged-todo"],
"exclude": ["no-unused-vars"]
}
},
"fmt": {
"useTabs": true,
"lineWidth": 80,
"indentWidth": 4,
"semiColons": false,
"singleQuote": true,
"proseWrap": "preserve",
"include": ["src/"],
"exclude": ["src/testdata/", "src/fixtures/**/*.ts"]
},
"lock": false,
"nodeModulesDir": true,
"unstable": ["webgpu"],
"npmRegistry": "https://mycompany.net/artifactory/api/npm/virtual-npm",
"test": {
"include": ["src/"],
"exclude": ["src/testdata/", "src/fixtures/**/*.ts"]
},
"tasks": {
"start": "deno run --allow-read main.ts"
},
"imports": {
"oak": "https://deno.land/x/[email protected]/mod.ts"
},
"exclude": [
"dist/"
]
}
JSON 模式 跳转到标题
JSON 模式文件可供编辑器提供自动完成。该文件已版本化,可在以下位置获得:https://deno.land/x/deno/cli/schemas/config-file.v1.json