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
相关产品推荐
相关产品推荐

