【发布时间】:2021-02-26 17:59:49
【问题描述】:
我正在使用 Deno 1.7,并希望将 JSON 文件的输出格式化为看起来像具有返回行和缩进/制表符的普通 JSON 文件。然而,这不是我在传递 JSON 样式字符串时看到的。
问题:为了获得不在一行上的文件(正确格式化 JSON),我应该改变什么?
注意:
供您参考,以下是最新的更新代码,根据下面给出的答案实际工作。
应用的结构是:
- app.ts(入口点)
- write-json.ts(写入 package.json 的模块)
- deps.ts
- .env
- package.json(这是应用程序的输出)
我运行的 deno 命令是:
$ deno run --allow-read --allow-env --allow-write app.ts
// app.ts
import { config } from './deps.ts';
import { writePackageJsonFile } from './write-json.ts';
config({ export: true, safe: true });
const packageName: string = Deno.env.get('PACKAGE_NAME')!;
const content: string = Deno.env.get('PACKAGE_CONTENTS')!;
if(!packageName || !content){
throw new Error("You must provide a valid file name and file content");
}
try {
const parsedContent: any = JSON.parse(content);
console.log(parsedContent)
await writePackageJsonFile(packageName, parsedContent);
} catch (_) {
throw new Error("The content provided for the file is not a valid JSON object");
}
// deps.ts
import { config } from 'https://deno.land/x/dotenv/mod.ts';
export { config };
// write-json.ts
import { writeJson, writeJsonSync } from 'https://deno.land/x/jsonfile/mod.ts';
export async function writePackageJsonFile(filename: string, contents: any) {
await writeJson(filename, contents, { spaces: 2 });
}
// .env
PACKAGE_NAME="package.json"
PACKAGE_CONTENTS='{"name": "app", "version": "1.0.0", "scripts": { "start": "METEOR_SETTINGS=$(cat settings.json) node main.js" } }'
【问题讨论】:
-
另外,环境变量中的JSON无效。它们的键和字符串值必须用双引号
"。所以把它们改成MY_VAR='{"key": "value"}'。然后先解析JSON,然后将其字符串化为-JSON.stringify(parsedJson, null, 2)。参考 - JSON.stringify()
标签: javascript json file environment-variables deno