🙌
deno fmt をコードの中で呼ぶ
deno のバージョン 1.25.3
時点の話
format.ts
const process = Deno.run({
cmd: [Deno.execPath(), "fmt", "-"],
stdin: "piped",
stdout: "piped",
});
await process.stdin.write(
new TextEncoder().encode(
"const a: number =28; console.log(20,(3+(4 * 10)) )"
)
);
process.stdin.writable.close();
console.log(new TextDecoder().decode(await process.output()));
実行コマンド
deno run --allow-run --allow-read ./format.ts
出力
const a: number = 28;
console.log(20, 3 + (4 * 10));
Deno.run
を使っているため, --allow-run
のフラグが必要. そのため Deno Deploy では動かない.
Runtime API として使えるようになれば, --allow-run
のフラグはつけなくて良くなりそう.
↓ 追加するかの議論
Prettier のほうが簡単に呼び出せた
// @deno-types="https://cdn.skypack.dev/prettier@2.7.1?dts"
import prettier from "https://unpkg.com/prettier@2.7.1/esm/standalone.mjs";
import parserTypeScript from "https://unpkg.com/prettier@2.7.1/esm/parser-typescript.mjs";
console.log(
prettier.format(
"const a: number =28; console.log(20,(3+(4 * 10)) )",
{
parser: "typescript",
plugins: [parserTypeScript],
}
)
);
実行コマンド
deno run ./format.ts
出力
const a: number = 28;
console.log(20, 3 + 4 * 10);
Prettier は deno fmt に比べて 余計なカッコを 更に取り除いてくれる
Discussion