diff --git a/.changeset/spicy-birds-wave.md b/.changeset/spicy-birds-wave.md new file mode 100644 index 000000000..68c7ae77a --- /dev/null +++ b/.changeset/spicy-birds-wave.md @@ -0,0 +1,5 @@ +--- +"lingo.dev": patch +--- + +run prettier in context of the target file diff --git a/packages/cli/src/cli/loaders/index.ts b/packages/cli/src/cli/loaders/index.ts index 0ac1ad9eb..5d42320b3 100644 --- a/packages/cli/src/cli/loaders/index.ts +++ b/packages/cli/src/cli/loaders/index.ts @@ -63,7 +63,7 @@ export default function createBucketLoader( case "html": return composeLoaders( createTextFileLoader(bucketPathPattern), - createPrettierLoader({ parser: "html", alwaysFormat: true }), + createPrettierLoader({ parser: "html", bucketPathPattern }), createHtmlLoader(), createSyncLoader(), createUnlocalizableLoader(options.isCacheRestore, options.returnUnlocalizedKeys), @@ -71,7 +71,7 @@ export default function createBucketLoader( case "json": return composeLoaders( createTextFileLoader(bucketPathPattern), - createPrettierLoader({ parser: "json" }), + createPrettierLoader({ parser: "json", bucketPathPattern }), createJsonLoader(), createFlatLoader(), createSyncLoader(), @@ -80,7 +80,7 @@ export default function createBucketLoader( case "markdown": return composeLoaders( createTextFileLoader(bucketPathPattern), - createPrettierLoader({ parser: "markdown" }), + createPrettierLoader({ parser: "markdown", bucketPathPattern }), createMarkdownLoader(), createSyncLoader(), createUnlocalizableLoader(options.isCacheRestore, options.returnUnlocalizedKeys), @@ -130,7 +130,7 @@ export default function createBucketLoader( case "yaml": return composeLoaders( createTextFileLoader(bucketPathPattern), - createPrettierLoader({ parser: "yaml" }), + createPrettierLoader({ parser: "yaml", bucketPathPattern }), createYamlLoader(), createFlatLoader(), createSyncLoader(), @@ -139,7 +139,7 @@ export default function createBucketLoader( case "yaml-root-key": return composeLoaders( createTextFileLoader(bucketPathPattern), - createPrettierLoader({ parser: "yaml" }), + createPrettierLoader({ parser: "yaml", bucketPathPattern }), createYamlLoader(), createRootKeyLoader(true), createFlatLoader(), @@ -149,7 +149,7 @@ export default function createBucketLoader( case "flutter": return composeLoaders( createTextFileLoader(bucketPathPattern), - createPrettierLoader({ parser: "json" }), + createPrettierLoader({ parser: "json", bucketPathPattern }), createJsonLoader(), createFlutterLoader(), createFlatLoader(), diff --git a/packages/cli/src/cli/loaders/prettier.ts b/packages/cli/src/cli/loaders/prettier.ts index c0d5566b9..c801cdf5d 100644 --- a/packages/cli/src/cli/loaders/prettier.ts +++ b/packages/cli/src/cli/loaders/prettier.ts @@ -1,9 +1,11 @@ +import path from "path"; import prettier, { Options } from "prettier"; import { ILoader } from "./_types"; import { createLoader } from "./_utils"; export type PrettierLoaderOptions = { parser: Options["parser"]; + bucketPathPattern: string; alwaysFormat?: boolean; }; @@ -13,8 +15,11 @@ export default function createPrettierLoader(options: PrettierLoaderOptions): IL return data; }, async push(locale, data) { - const prettierConfig = await loadPrettierConfig(); - if (!prettierConfig && !options.alwaysFormat) { + const draftPath = options.bucketPathPattern.replaceAll("[locale]", locale); + const finalPath = path.resolve(draftPath); + + const prettierConfig = await loadPrettierConfig(finalPath); + if (!prettierConfig) { return data; } @@ -36,9 +41,9 @@ export default function createPrettierLoader(options: PrettierLoaderOptions): IL }); } -async function loadPrettierConfig() { +async function loadPrettierConfig(filePath: string) { try { - const config = await prettier.resolveConfig(process.cwd()); + const config = await prettier.resolveConfig(filePath); return config; } catch (error) { return {};