You need to enable JavaScript to run this app. Deno 1.7 环境下如何配置输出带换行缩进的格式化JSON文件
优惠活动
大模型
产品
解决方案
定价
更多

Deno 1.7 环境下如何配置输出带换行缩进的格式化JSON文件

实现Deno格式化输出JSON文件的调整方案

问题根源

输出的JSON为无缩进单行内容,是因为项目引入的第三方JSON写入模块和Deno 1.7版本的参数适配存在兼容问题。完全不需要额外引入复杂依赖,通过Deno原生API即可实现标准可读的JSON格式输出,核心调整点如下:

  • 替换有兼容问题的第三方写入依赖,全链路使用原生API完成序列化和文件写入,减少版本适配隐患
  • 序列化阶段直接指定缩进规则,从根源上保证输出格式符合预期
  • 补全文件末尾的换行符,符合通用JSON文件的格式规范

具体代码修改

将write-json.ts的原有实现替换为以下代码即可:

// write-json.ts 调整后内容
export async function writePackageJsonFile(filename: string, contents: any) {
  // JSON.stringify 第三个参数控制缩进规则:传2为2个空格缩进,传'\t'则使用制表符缩进
  const formattedJson = JSON.stringify(contents, null, 2);
  // 写入时在末尾补充一个换行,匹配编辑器、npm工具识别的常规文件格式
  await Deno.writeTextFile(filename, formattedJson + "\n");
}

其余项目文件不需要任何改动:

  • app.ts中读取环境变量、校验JSON合法性、解析内容的逻辑全部保留
  • deps.ts、.env的配置无需修改
  • 执行命令保持原有deno run --allow-read --allow-env --allow-write app.ts即可,原生API不需要额外申请权限

踩坑提醒

  • 如果想保留第三方jsonfile模块,需要核对Deno 1.7版本下该模块的配置参数格式:早期版本的缩进参数名可能为indent而非spaces,参数名不匹配时缩进规则不会生效,最终输出仍为无格式单行内容
  • 禁止将环境变量读取到的原始字符串直接写入文件,必须先经过JSON.parse转换为对象再重新序列化,否则原始字符串的格式问题会直接带入输出文件

内容的提问来源于stack exchange,提问作者Aaron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.01 11:54:03