Skip to content

Commit 4005711

Browse files
authored
fix: dynamically require prettier (#314)
solve this error when running via `npx` - prettier only used by documentation playground at present ``` docker run -it --rm node:22 /bin/bash root@82e7ad57cd5a:/# npx @nahkies/openapi-code-generator --help Need to install the following packages: @nahkies/openapi-code-generator@0.19.1 Ok to proceed? (y) y Error: Cannot find module 'prettier/standalone' Require stack: - /root/.npm/_npx/3f396bc669781e99/node_modules/@nahkies/openapi-code-generator/dist/typescript/common/typescript-formatter.prettier.js - /root/.npm/_npx/3f396bc669781e99/node_modules/@nahkies/openapi-code-generator/dist/index.js - /root/.npm/_npx/3f396bc669781e99/node_modules/@nahkies/openapi-code-generator/dist/cli.js at Function._resolveFilename (node:internal/modules/cjs/loader:1225:15) at Function._load (node:internal/modules/cjs/loader:1055:27) at TracingChannel.traceSync (node:diagnostics_channel:322:14) at wrapModuleLoad (node:internal/modules/cjs/loader:220:24) at Module.require (node:internal/modules/cjs/loader:1311:12) at require (node:internal/modules/helpers:136:16) at Object.<anonymous> (/root/.npm/_npx/3f396bc669781e99/node_modules/@nahkies/openapi-code-generator/src/typescript/common/typescript-formatter.prettier.ts:3:18) at Module._compile (node:internal/modules/cjs/loader:1554:14) at Object..js (node:internal/modules/cjs/loader:1706:10) at Module.load (node:internal/modules/cjs/loader:1289:32) ```
1 parent f947b45 commit 4005711

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

packages/openapi-code-generator/src/typescript/common/typescript-formatter.prettier.ts

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
import type {IFormatter} from "../../core/interfaces"
22
import {logger} from "../../core/logger"
3-
const prettier = require("prettier/standalone")
4-
const plugins = [
5-
require("prettier/plugins/estree"),
6-
require("prettier/plugins/typescript"),
7-
]
83

94
export class TypescriptFormatterPrettier implements IFormatter {
10-
private constructor() {}
5+
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
6+
prettier: any
7+
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
8+
plugins: any[]
9+
10+
private constructor() {
11+
this.prettier = require("prettier/standalone")
12+
this.plugins = [
13+
require("prettier/plugins/estree"),
14+
require("prettier/plugins/typescript"),
15+
]
16+
}
1117

1218
async format(
1319
filename: string,
@@ -19,11 +25,11 @@ export class TypescriptFormatterPrettier implements IFormatter {
1925
.join("\n")
2026

2127
try {
22-
const formatted = await prettier.format(trimmed, {
28+
const formatted = await this.prettier.format(trimmed, {
2329
semi: false,
2430
arrowParens: "always",
2531
parser: "typescript",
26-
plugins,
32+
plugins: this.plugins,
2733
})
2834

2935
return {result: formatted}

0 commit comments

Comments
 (0)