From bc396bc41b8f621b9ce61e34df0051ffd23c6763 Mon Sep 17 00:00:00 2001 From: garronej Date: Sun, 16 Mar 2025 02:17:11 +0100 Subject: [PATCH] Update runPrettier so that it will still work if we ever switch to ESM --- src/bin/tools/runPrettier.ts | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/bin/tools/runPrettier.ts b/src/bin/tools/runPrettier.ts index 024d72c9..4423176b 100644 --- a/src/bin/tools/runPrettier.ts +++ b/src/bin/tools/runPrettier.ts @@ -52,10 +52,26 @@ export async function getPrettier(): Promise { // So we do a sketchy eval to bypass ncc. // We make sure to only do that when linking, otherwise we import properly. if (readThisNpmPackageVersion().startsWith("0.0.0")) { - eval( - `${symToStr({ prettier })} = require("${pathResolve(pathJoin(getNodeModulesBinDirPath({ packageJsonFilePath: undefined }), "..", "prettier"))}")` + const prettierDirPath = pathResolve( + pathJoin( + getNodeModulesBinDirPath({ packageJsonFilePath: undefined }), + "..", + "prettier" + ) ); + const isCJS = typeof module !== "undefined" && module.exports; + + if (isCJS) { + eval(`${symToStr({ prettier })} = require("${prettierDirPath}")`); + } else { + prettier = await new Promise(_resolve => { + eval( + `import("file:///${pathJoin(prettierDirPath, "index.mjs").replace(/\\/g, "/")}").then(prettier => _resolve(prettier))` + ); + }); + } + assert(!is(prettier)); break import_prettier;