[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"knowledge-\u002Fapi\u002Fknowledge\u002Fbooklet\u002Fend\u002Fdeno\u002Finit":3,"knowledge-related-\u002Fknowledge\u002Fbooklet\u002Fend\u002Fdeno\u002Finit":1162,"knowledge-series-\u002Fknowledge\u002Fbooklet\u002Fend\u002Fdeno\u002Finit":1180},{"source":4,"connector":5,"page":6},"sqlite","better-sqlite3",{"path":7,"title":8,"description":9,"category":10,"tags":11,"date":14,"pinned":15,"draft":15,"body":16,"seo":1158,"stem":1159,"id":1160,"extension":1161},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Fdeno\u002Finit","项目初始化与基础命令","Deno 提供了开箱即用的项目管理工具集，无需额外配置即可初始化项目、运行脚本、执行代码片段等。","技能小册",[12,13],"deno","init","2025-02-14",false,{"type":17,"value":18,"toc":1139},"minimark",[19,22,27,30,35,140,160,164,291,298,307,393,404,408,519,526,533,599,608,615,624,835,904,911,916,930,933,936,989,992,1035,1038,1074,1077,1135],[20,21,8],"h1",{"id":8},[23,24,26],"h2",{"id":25},"deno-项目初始化与基础命令","Deno 项目初始化与基础命令",[28,29,9],"p",{},[31,32,34],"h3",{"id":33},"一基础命令速查","一、基础命令速查",[36,37,38,51],"table",{},[39,40,41],"thead",{},[42,43,44,48],"tr",{},[45,46,47],"th",{},"命令",[45,49,50],{},"说明",[52,53,54,77,87,100,110,130],"tbody",{},[42,55,56,63],{},[57,58,59],"td",{},[60,61,62],"code",{},"deno init",[57,64,65,66,69,70,69,73,76],{},"在当前目录创建一个新的 Deno 项目模板（生成 ",[60,67,68],{},"main.ts","、",[60,71,72],{},"main_test.ts",[60,74,75],{},"deno.json","）",[42,78,79,84],{},[57,80,81],{},[60,82,83],{},"deno run \u003Cfile>",[57,85,86],{},"执行 TypeScript 或 JavaScript 文件（支持 URL 直接运行）",[42,88,89,94],{},[57,90,91],{},[60,92,93],{},"deno eval \"\u003Ccode>\"",[57,95,96,97,76],{},"执行一段代码字符串（例如 ",[60,98,99],{},"deno eval \"console.log('Hello')\"",[42,101,102,107],{},[57,103,104],{},[60,105,106],{},"deno repl",[57,108,109],{},"启动交互式 REPL 环境，可以逐行输入 JavaScript\u002FTypeScript 代码",[42,111,112,117],{},[57,113,114],{},[60,115,116],{},"deno task \u003Cscript>",[57,118,119,120,122,123,126,127,76],{},"运行 ",[60,121,75],{}," 文件中 ",[60,124,125],{},"\"tasks\""," 字段定义的自定义任务（类似 ",[60,128,129],{},"npm run",[42,131,132,137],{},[57,133,134],{},[60,135,136],{},"deno info",[57,138,139],{},"显示 Deno 的本地信息，包括缓存目录、远程模块缓存位置等",[141,142,143],"blockquote",{},[28,144,145,146,149,150,69,153,69,156,159],{},"注意：",[60,147,148],{},"deno run"," 时如果脚本需要访问网络、文件系统、环境变量等权限，需要显式添加 ",[60,151,152],{},"--allow-net",[60,154,155],{},"--allow-read",[60,157,158],{},"--allow-env"," 等标志。",[31,161,163],{"id":162},"二示例创建并运行第一个项目","二、示例：创建并运行第一个项目",[165,166,171],"pre",{"className":167,"code":168,"language":169,"meta":170,"style":170},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","# 新建项目目录\nmkdir my-deno-app\ncd my-deno-app\n\n# 初始化项目（生成默认文件）\ndeno init\n\n# 查看生成的文件\nls\n# 输出：deno.json  main.ts  main_test.ts\n\n# 运行主程序\ndeno run main.ts\n# 输出：Hello World! (默认内容)\n\n# 如果需要网络请求，加上权限，例如：\n# deno run --allow-net main.ts\n","bash","",[60,172,173,182,193,202,209,215,223,228,234,240,246,251,257,268,274,279,285],{"__ignoreMap":170},[174,175,178],"span",{"class":176,"line":177},"line",1,[174,179,181],{"class":180},"sutJx","# 新建项目目录\n",[174,183,185,189],{"class":176,"line":184},2,[174,186,188],{"class":187},"sbgvK","mkdir",[174,190,192],{"class":191},"s_sjI"," my-deno-app\n",[174,194,196,200],{"class":176,"line":195},3,[174,197,199],{"class":198},"sptTA","cd",[174,201,192],{"class":191},[174,203,205],{"class":176,"line":204},4,[174,206,208],{"emptyLinePlaceholder":207},true,"\n",[174,210,212],{"class":176,"line":211},5,[174,213,214],{"class":180},"# 初始化项目（生成默认文件）\n",[174,216,218,220],{"class":176,"line":217},6,[174,219,12],{"class":187},[174,221,222],{"class":191}," init\n",[174,224,226],{"class":176,"line":225},7,[174,227,208],{"emptyLinePlaceholder":207},[174,229,231],{"class":176,"line":230},8,[174,232,233],{"class":180},"# 查看生成的文件\n",[174,235,237],{"class":176,"line":236},9,[174,238,239],{"class":187},"ls\n",[174,241,243],{"class":176,"line":242},10,[174,244,245],{"class":180},"# 输出：deno.json  main.ts  main_test.ts\n",[174,247,249],{"class":176,"line":248},11,[174,250,208],{"emptyLinePlaceholder":207},[174,252,254],{"class":176,"line":253},12,[174,255,256],{"class":180},"# 运行主程序\n",[174,258,260,262,265],{"class":176,"line":259},13,[174,261,12],{"class":187},[174,263,264],{"class":191}," run",[174,266,267],{"class":191}," main.ts\n",[174,269,271],{"class":176,"line":270},14,[174,272,273],{"class":180},"# 输出：Hello World! (默认内容)\n",[174,275,277],{"class":176,"line":276},15,[174,278,208],{"emptyLinePlaceholder":207},[174,280,282],{"class":176,"line":281},16,[174,283,284],{"class":180},"# 如果需要网络请求，加上权限，例如：\n",[174,286,288],{"class":176,"line":287},17,[174,289,290],{"class":180},"# deno run --allow-net main.ts\n",[31,292,294,295,76],{"id":293},"三自定义任务deno-task","三、自定义任务（",[60,296,297],{},"deno task",[28,299,300,301,303,304,306],{},"在 ",[60,302,75],{}," 中添加 ",[60,305,125],{}," 字段，可以定义常用命令：",[165,308,312],{"className":309,"code":310,"language":311,"meta":170,"style":170},"language-json shiki shiki-themes material-theme-lighter github-light github-dark","{\n  \"tasks\": {\n    \"start\": \"deno run --allow-net main.ts\",\n    \"dev\": \"deno run --watch --allow-net main.ts\"\n  }\n}\n","json",[60,313,314,320,339,364,383,388],{"__ignoreMap":170},[174,315,316],{"class":176,"line":177},[174,317,319],{"class":318},"sP7_E","{\n",[174,321,322,326,330,333,336],{"class":176,"line":184},[174,323,325],{"class":324},"s39Yj","  \"",[174,327,329],{"class":328},"sseR_","tasks",[174,331,332],{"class":324},"\"",[174,334,335],{"class":318},":",[174,337,338],{"class":318}," {\n",[174,340,341,344,348,350,352,356,359,361],{"class":176,"line":195},[174,342,343],{"class":324},"    \"",[174,345,347],{"class":346},"sZMiF","start",[174,349,332],{"class":324},[174,351,335],{"class":318},[174,353,355],{"class":354},"sjJ54"," \"",[174,357,358],{"class":191},"deno run --allow-net main.ts",[174,360,332],{"class":354},[174,362,363],{"class":318},",\n",[174,365,366,368,371,373,375,377,380],{"class":176,"line":204},[174,367,343],{"class":324},[174,369,370],{"class":346},"dev",[174,372,332],{"class":324},[174,374,335],{"class":318},[174,376,355],{"class":354},[174,378,379],{"class":191},"deno run --watch --allow-net main.ts",[174,381,382],{"class":354},"\"\n",[174,384,385],{"class":176,"line":211},[174,386,387],{"class":318},"  }\n",[174,389,390],{"class":176,"line":217},[174,391,392],{"class":318},"}\n",[28,394,395,396,399,400,403],{},"然后通过 ",[60,397,398],{},"deno task start"," 或 ",[60,401,402],{},"deno task dev"," 执行。",[31,405,407],{"id":406},"四其他常用命令示例","四、其他常用命令示例",[165,409,411],{"className":167,"code":410,"language":169,"meta":170,"style":170},"# 直接运行远程脚本（无需下载）\ndeno run https:\u002F\u002Fdeno.land\u002Fstd@0.208.0\u002Fexamples\u002Fwelcome.ts\n\n# 执行一段代码\ndeno eval \"console.log('Hi from Deno')\"\n\n# 进入 REPL 交互环境\ndeno repl\n> 1 + 2\n> const msg = \"Hello\"\n> console.log(msg)\n\n# 查看缓存信息\ndeno info\n",[60,412,413,418,427,431,436,450,454,459,466,476,490,503,507,512],{"__ignoreMap":170},[174,414,415],{"class":176,"line":177},[174,416,417],{"class":180},"# 直接运行远程脚本（无需下载）\n",[174,419,420,422,424],{"class":176,"line":184},[174,421,12],{"class":187},[174,423,264],{"class":191},[174,425,426],{"class":191}," https:\u002F\u002Fdeno.land\u002Fstd@0.208.0\u002Fexamples\u002Fwelcome.ts\n",[174,428,429],{"class":176,"line":195},[174,430,208],{"emptyLinePlaceholder":207},[174,432,433],{"class":176,"line":204},[174,434,435],{"class":180},"# 执行一段代码\n",[174,437,438,440,443,445,448],{"class":176,"line":211},[174,439,12],{"class":187},[174,441,442],{"class":191}," eval",[174,444,355],{"class":354},[174,446,447],{"class":191},"console.log('Hi from Deno')",[174,449,382],{"class":354},[174,451,452],{"class":176,"line":217},[174,453,208],{"emptyLinePlaceholder":207},[174,455,456],{"class":176,"line":225},[174,457,458],{"class":180},"# 进入 REPL 交互环境\n",[174,460,461,463],{"class":176,"line":230},[174,462,12],{"class":187},[174,464,465],{"class":191}," repl\n",[174,467,468,472],{"class":176,"line":236},[174,469,471],{"class":470},"smGrS",">",[174,473,475],{"class":474},"su5hD"," 1 + 2\n",[174,477,478,480,483,485,488],{"class":176,"line":242},[174,479,471],{"class":470},[174,481,482],{"class":474}," const msg = ",[174,484,332],{"class":354},[174,486,487],{"class":191},"Hello",[174,489,382],{"class":354},[174,491,492,494,497,500],{"class":176,"line":248},[174,493,471],{"class":470},[174,495,496],{"class":474}," console.log(",[174,498,499],{"class":187},"msg",[174,501,502],{"class":474},")\n",[174,504,505],{"class":176,"line":253},[174,506,208],{"emptyLinePlaceholder":207},[174,508,509],{"class":176,"line":259},[174,510,511],{"class":180},"# 查看缓存信息\n",[174,513,514,516],{"class":176,"line":270},[174,515,12],{"class":187},[174,517,518],{"class":191}," info\n",[28,520,521,522,525],{},"掌握这些命令，即可开始使用 Deno 进行开发。更多权限和选项可通过 ",[60,523,524],{},"deno run --help"," 查看。",[31,527,529,530,532],{"id":528},"五deno-init-的更多用法","五、",[60,531,62],{}," 的更多用法",[165,534,536],{"className":167,"code":535,"language":169,"meta":170,"style":170},"# 初始化一个库项目（生成适合发布为 JSR 包的结构）\ndeno init --lib my-lib\n\n# 在当前已有目录里初始化（不新建子目录）\ndeno init .\n\n# 基于 npm 模板脚手架创建（复用 create-* 系列工具，例如 Vite）\ndeno run -A npm:create-vite@latest my-app\n",[60,537,538,543,557,561,566,575,579,584],{"__ignoreMap":170},[174,539,540],{"class":176,"line":177},[174,541,542],{"class":180},"# 初始化一个库项目（生成适合发布为 JSR 包的结构）\n",[174,544,545,547,550,554],{"class":176,"line":184},[174,546,12],{"class":187},[174,548,549],{"class":191}," init",[174,551,553],{"class":552},"stzsN"," --lib",[174,555,556],{"class":191}," my-lib\n",[174,558,559],{"class":176,"line":195},[174,560,208],{"emptyLinePlaceholder":207},[174,562,563],{"class":176,"line":204},[174,564,565],{"class":180},"# 在当前已有目录里初始化（不新建子目录）\n",[174,567,568,570,572],{"class":176,"line":211},[174,569,12],{"class":187},[174,571,549],{"class":191},[174,573,574],{"class":191}," .\n",[174,576,577],{"class":176,"line":217},[174,578,208],{"emptyLinePlaceholder":207},[174,580,581],{"class":176,"line":225},[174,582,583],{"class":180},"# 基于 npm 模板脚手架创建（复用 create-* 系列工具，例如 Vite）\n",[174,585,586,588,590,593,596],{"class":176,"line":230},[174,587,12],{"class":187},[174,589,264],{"class":191},[174,591,592],{"class":552}," -A",[174,594,595],{"class":191}," npm:create-vite@latest",[174,597,598],{"class":191}," my-app\n",[28,600,601,603,604,607],{},[60,602,62],{}," 默认生成的是最小可运行示例；如果你需要 Web 框架、前端工程模板，通常会借助 ",[60,605,606],{},"npm:create-*"," 系列脚手架，Deno 只是替代了运行\u002F包管理这一层。",[31,609,611,612,614],{"id":610},"六denojson-常用字段一览","六、",[60,613,75],{}," 常用字段一览",[28,616,617,618,620,621,623],{},"除 ",[60,619,329],{}," 外，",[60,622,75],{}," 还支持不少常用字段：",[165,625,627],{"className":309,"code":626,"language":311,"meta":170,"style":170},"{\n  \"tasks\": {\n    \"dev\": \"deno run --watch --allow-net main.ts\",\n    \"test\": \"deno test --allow-net\"\n  },\n  \"imports\": {\n    \"@std\u002Fassert\": \"jsr:@std\u002Fassert@1\"\n  },\n  \"fmt\": { \"lineWidth\": 100, \"indentWidth\": 2 },\n  \"lint\": { \"exclude\": [\"dist\u002F\"] },\n  \"compilerOptions\": { \"strict\": true }\n}\n",[60,628,629,633,645,663,681,686,699,717,721,766,803,831],{"__ignoreMap":170},[174,630,631],{"class":176,"line":177},[174,632,319],{"class":318},[174,634,635,637,639,641,643],{"class":176,"line":184},[174,636,325],{"class":324},[174,638,329],{"class":328},[174,640,332],{"class":324},[174,642,335],{"class":318},[174,644,338],{"class":318},[174,646,647,649,651,653,655,657,659,661],{"class":176,"line":195},[174,648,343],{"class":324},[174,650,370],{"class":346},[174,652,332],{"class":324},[174,654,335],{"class":318},[174,656,355],{"class":354},[174,658,379],{"class":191},[174,660,332],{"class":354},[174,662,363],{"class":318},[174,664,665,667,670,672,674,676,679],{"class":176,"line":204},[174,666,343],{"class":324},[174,668,669],{"class":346},"test",[174,671,332],{"class":324},[174,673,335],{"class":318},[174,675,355],{"class":354},[174,677,678],{"class":191},"deno test --allow-net",[174,680,382],{"class":354},[174,682,683],{"class":176,"line":211},[174,684,685],{"class":318},"  },\n",[174,687,688,690,693,695,697],{"class":176,"line":217},[174,689,325],{"class":324},[174,691,692],{"class":328},"imports",[174,694,332],{"class":324},[174,696,335],{"class":318},[174,698,338],{"class":318},[174,700,701,703,706,708,710,712,715],{"class":176,"line":225},[174,702,343],{"class":324},[174,704,705],{"class":346},"@std\u002Fassert",[174,707,332],{"class":324},[174,709,335],{"class":318},[174,711,355],{"class":354},[174,713,714],{"class":191},"jsr:@std\u002Fassert@1",[174,716,382],{"class":354},[174,718,719],{"class":176,"line":230},[174,720,685],{"class":318},[174,722,723,725,728,730,732,735,737,740,742,744,748,751,753,756,758,760,763],{"class":176,"line":236},[174,724,325],{"class":324},[174,726,727],{"class":328},"fmt",[174,729,332],{"class":324},[174,731,335],{"class":318},[174,733,734],{"class":318}," {",[174,736,355],{"class":324},[174,738,739],{"class":346},"lineWidth",[174,741,332],{"class":324},[174,743,335],{"class":318},[174,745,747],{"class":746},"srdBf"," 100",[174,749,750],{"class":318},",",[174,752,355],{"class":324},[174,754,755],{"class":346},"indentWidth",[174,757,332],{"class":324},[174,759,335],{"class":318},[174,761,762],{"class":746}," 2",[174,764,765],{"class":318}," },\n",[174,767,768,770,773,775,777,779,781,784,786,788,791,793,796,798,801],{"class":176,"line":242},[174,769,325],{"class":324},[174,771,772],{"class":328},"lint",[174,774,332],{"class":324},[174,776,335],{"class":318},[174,778,734],{"class":318},[174,780,355],{"class":324},[174,782,783],{"class":346},"exclude",[174,785,332],{"class":324},[174,787,335],{"class":318},[174,789,790],{"class":318}," [",[174,792,332],{"class":354},[174,794,795],{"class":191},"dist\u002F",[174,797,332],{"class":354},[174,799,800],{"class":318},"]",[174,802,765],{"class":318},[174,804,805,807,810,812,814,816,818,821,823,825,828],{"class":176,"line":248},[174,806,325],{"class":324},[174,808,809],{"class":328},"compilerOptions",[174,811,332],{"class":324},[174,813,335],{"class":318},[174,815,734],{"class":318},[174,817,355],{"class":324},[174,819,820],{"class":346},"strict",[174,822,332],{"class":324},[174,824,335],{"class":318},[174,826,827],{"class":324}," true",[174,829,830],{"class":318}," }\n",[174,832,833],{"class":176,"line":253},[174,834,392],{"class":318},[36,836,837,847],{},[39,838,839],{},[42,840,841,844],{},[45,842,843],{},"字段",[45,845,846],{},"作用",[52,848,849,866,892],{},[42,850,851,855],{},[57,852,853],{},[60,854,692],{},[57,856,857,858,861,862,865],{},"类似 ",[60,859,860],{},"tsconfig.json"," 的 ",[60,863,864],{},"paths","，为模块地址提供简短别名",[42,867,868,875],{},[57,869,870,872,873],{},[60,871,727],{}," \u002F ",[60,874,772],{},[57,876,877,878,881,882,885,886,881,889],{},"配置 ",[60,879,880],{},"deno fmt","\u002F",[60,883,884],{},"deno lint"," 的行为，替代独立的 ",[60,887,888],{},".prettierrc",[60,890,891],{},".eslintrc",[42,893,894,898],{},[57,895,896],{},[60,897,809],{},[57,899,900,901,903],{},"影响 TypeScript 类型检查的行为，字段与 ",[60,902,860],{}," 大体兼容",[31,905,907,908,910],{"id":906},"七deno-info-实战","七、",[60,909,136],{}," 实战",[28,912,913,915],{},[60,914,136],{}," 不仅能看缓存目录，还能分析单个模块的依赖树，排查“为什么体积这么大”“是否引入了重复依赖”等问题：",[165,917,919],{"className":167,"code":918,"language":169,"meta":170,"style":170},"deno info main.ts\n",[60,920,921],{"__ignoreMap":170},[174,922,923,925,928],{"class":176,"line":177},[174,924,12],{"class":187},[174,926,927],{"class":191}," info",[174,929,267],{"class":191},[28,931,932],{},"输出会列出模块的本地路径、依赖数量、估算大小，以及每个依赖的来源（本地 \u002F JSR \u002F npm \u002F URL），是审计依赖来源的重要手段。",[23,934,935],{"id":935},"常见坑",[937,938,939,952,968,980],"ul",{},[940,941,942,948,949,951],"li",{},[943,944,945,947],"strong",{},[60,946,62],{}," 在非空目录里覆盖同名文件","：初始化前确认目录内容，或先 ",[60,950,62],{}," 在临时目录、再手动搬迁需要的文件。",[940,953,954,963,964,967],{},[943,955,956,958,959,962],{},[60,957,297],{}," 中的命令依赖 shell 特性（如 ",[60,960,961],{},"&&","、通配符）在不同平台表现不一致","：跨平台团队建议保持任务脚本简单，复杂逻辑放进单独的 ",[60,965,966],{},".ts"," 脚本再由 task 调用。",[940,969,970,976,977,979],{},[943,971,972,973,975],{},"忘记给 ",[60,974,297],{}," 里的命令加权限标志","：任务本身不会自动“继承”终端里手动加的权限，需要在 ",[60,978,329],{}," 字段里显式声明一次。",[940,981,982,988],{},[943,983,984,987],{},[60,985,986],{},"--watch"," 与需要长期保持的连接\u002F状态冲突","：文件变化会重启整个进程，内存中的状态、WebSocket 连接等都会丢失，仅适合开发阶段。",[23,990,991],{"id":991},"最佳实践",[993,994,995,1004,1023,1030],"ol",{},[940,996,997,998,1000,1001,1003],{},"新项目统一执行一次 ",[60,999,62],{}," 打底，再按需删除不需要的示例文件，保持 ",[60,1002,75],{}," 存在即可获得工具链的一致行为。",[940,1005,1006,1007,1009,1010,69,1012,69,1014,69,1016,1018,1019,1022],{},"把日常命令都收进 ",[60,1008,329],{},"（",[60,1011,370],{},[60,1013,669],{},[60,1015,727],{},[60,1017,772],{},"），团队成员只需记住 ",[60,1020,1021],{},"deno task \u003Cname>","，无需背诵一长串标志。",[940,1024,1025,1026,1029],{},"定期跑一次 ",[60,1027,1028],{},"deno info main.ts","，关注依赖数量与来源是否符合预期，尽早发现意外引入的重量级依赖。",[940,1031,1032,1034],{},[60,1033,75],{}," 纳入版本控制并 Code Review，把它当作项目配置的“单一真源”，而不是每个人本地各自维护参数。",[23,1036,1037],{"id":1037},"延伸阅读",[937,1039,1040,1048,1055,1065],{},[940,1041,1042,1047],{},[1043,1044,1046],"a",{"href":1045},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Fdeno\u002Fbase","Deno 基础","：学习路径与整体设计目标。",[940,1049,1050,1054],{},[1043,1051,1053],{"href":1052},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Fdeno\u002Finstall","安装与环境","：先完成安装才能跑通本文命令。",[940,1056,1057,1061,1062,1064],{},[1043,1058,1060],{"href":1059},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Fdeno\u002Fauth","权限模型","：",[60,1063,297],{}," 中权限标志的写法依据。",[940,1066,1067,1061,1071,1073],{},[1043,1068,1070],{"href":1069},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Fdeno\u002Fpackage","包管理与依赖",[60,1072,692],{}," 字段与依赖来源详解。",[23,1075,1076],{"id":1076},"参考文献",[36,1078,1079,1088],{},[39,1080,1081],{},[42,1082,1083,1086],{},[45,1084,1085],{},"资料",[45,1087,50],{},[52,1089,1090,1102,1113,1124],{},[42,1091,1092,1099],{},[57,1093,1094],{},[1043,1095,62],{"href":1096,"rel":1097},"https:\u002F\u002Fdocs.deno.com\u002Fruntime\u002Freference\u002Fcli\u002Finit\u002F",[1098],"nofollow",[57,1100,1101],{},"初始化项目",[42,1103,1104,1110],{},[57,1105,1106],{},[1043,1107,297],{"href":1108,"rel":1109},"https:\u002F\u002Fdocs.deno.com\u002Fruntime\u002Freference\u002Fcli\u002Ftask\u002F",[1098],[57,1111,1112],{},"自定义任务",[42,1114,1115,1121],{},[57,1116,1117],{},[1043,1118,75],{"href":1119,"rel":1120},"https:\u002F\u002Fdocs.deno.com\u002Fruntime\u002Ffundamentals\u002Fconfiguration\u002F",[1098],[57,1122,1123],{},"配置",[42,1125,1126,1132],{},[57,1127,1128],{},[1043,1129,136],{"href":1130,"rel":1131},"https:\u002F\u002Fdocs.deno.com\u002Fruntime\u002Freference\u002Fcli\u002Finfo\u002F",[1098],[57,1133,1134],{},"依赖信息",[1136,1137,1138],"style",{},"html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sptTA, html code.shiki .sptTA{--shiki-light:#6182B8;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s39Yj, html code.shiki .s39Yj{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sseR_, html code.shiki .sseR_{--shiki-light:#9C3EDA;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZMiF, html code.shiki .sZMiF{--shiki-light:#E2931D;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .stzsN, html code.shiki .stzsN{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":170,"searchDepth":184,"depth":184,"links":1140},[1141,1154,1155,1156,1157],{"id":25,"depth":184,"text":26,"children":1142},[1143,1144,1145,1147,1148,1150,1152],{"id":33,"depth":195,"text":34},{"id":162,"depth":195,"text":163},{"id":293,"depth":195,"text":1146},"三、自定义任务（deno task）",{"id":406,"depth":195,"text":407},{"id":528,"depth":195,"text":1149},"五、deno init 的更多用法",{"id":610,"depth":195,"text":1151},"六、deno.json 常用字段一览",{"id":906,"depth":195,"text":1153},"七、deno info 实战",{"id":935,"depth":184,"text":935},{"id":991,"depth":184,"text":991},{"id":1037,"depth":184,"text":1037},{"id":1076,"depth":184,"text":1076},{"title":8,"description":9},"knowledge\u002Fbooklet\u002Fend\u002FDeno\u002Finit","knowledge\u002Fknowledge\u002Fbooklet\u002Fend\u002FDeno\u002Finit.md","md",{"items":1163},[1164,1166,1170,1172,1176,1178],{"path":1045,"title":1046,"description":1165,"category":10,"score":217},"Deno 是基于 V8 与 Rust 的 JavaScript\u002FTypeScript 运行时，由 Node.js 原作者 Ryan Dahl 发起。官方文档：docs.deno.com。与 Node、Bun 的对比见 运行时对比。",{"path":1167,"title":1168,"description":1169,"category":10,"score":217},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Fdeno\u002Ftools","内置工具链","Deno 提供了开箱即用的工具链，无需安装任何第三方依赖即可完成代码格式化、检查、测试、覆盖率、文档生成和基准测试等任务。",{"path":1069,"title":1070,"description":1171,"category":10,"score":217},"Deno 以 deno.json 管理项目（imports、tasks 等），依赖通过 URL、jsr:、npm: 解析并缓存到本地（默认 DENO_DIR），通常不需要像 Node 那样维护庞大的 node_modules 树。在需…",{"path":1173,"title":1174,"description":1175,"category":10,"score":217},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Fdeno\u002Fother","其他配置","Deno 默认禁止访问环境变量，以遵循最小权限原则。必须通过 --allow-env 标志显式开启。",{"path":1059,"title":1060,"description":1177,"category":10,"score":217},"Deno 默认在安全的沙盒环境中执行任何代码——无论是你的主程序还是第三方依赖，都没有文件、网络、环境变量或子进程的访问权限。只有通过 命令行标志显式授予 的权限才能被使用。",{"path":1052,"title":1053,"description":1179,"category":10,"score":217},"Deno 提供了多种安装方式，覆盖主流操作系统。安装后需确保环境 PATH 正确，并可配置一些环境变量以控制行为。",{"series":1181,"title":12,"items":1182,"index":195,"prev":1200,"next":1201},"booklet\u002Fend\u002Fdeno",[1183,1185,1187,1191,1192,1194,1196,1198],{"path":1059,"title":1060,"date":1184,"pinned":15},"2021-04-01",{"path":1045,"title":1046,"date":1186,"pinned":15},"2026-06-01",{"path":1188,"title":1189,"date":1190,"pinned":15},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Fdeno\u002Fhttp","HTTP 服务器","2020-12-11",{"path":7,"title":8,"date":14,"pinned":15},{"path":1052,"title":1053,"date":1193,"pinned":15},"2021-02-05",{"path":1173,"title":1174,"date":1195,"pinned":15},"2022-02-08",{"path":1069,"title":1070,"date":1197,"pinned":15},"2024-07-21",{"path":1167,"title":1168,"date":1199,"pinned":15},"2026-01-24",{"path":1188,"title":1189,"date":1190,"pinned":15},{"path":1052,"title":1053,"date":1193,"pinned":15}]