@gjsify/vite-plugin-gettext 0.2.5 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/msgfmt.js CHANGED
@@ -1,7 +1,17 @@
1
1
  import {} from "vite";
2
2
  import { execa } from "execa";
3
3
  import path from "node:path";
4
+ import fs from "node:fs/promises";
4
5
  import { checkDependencies, findAvailableLanguages, ensureDirectory, } from "./utils.js";
6
+ /**
7
+ * Remove XML comments from a file content
8
+ * @param content The XML content as string
9
+ * @returns The content with comments removed
10
+ */
11
+ function removeXmlComments(content) {
12
+ // Remove XML comments <!-- ... -->
13
+ return content.replace(/<!--[\s\S]*?-->/g, '');
14
+ }
5
15
  /**
6
16
  * Get output file extension based on the format
7
17
  * @param format The output format
@@ -39,7 +49,7 @@ function getOutputExtension(format) {
39
49
  * @returns A Vite plugin that handles PO compilation
40
50
  */
41
51
  export function msgfmtPlugin(options) {
42
- const { poDirectory, outputDirectory, domain = "messages", format = "mo", templateFile, verbose = false, msgfmtOptions = [], useLocaleStructure = true, } = options;
52
+ const { poDirectory, outputDirectory, domain = "messages", format = "mo", templateFile, verbose = false, msgfmtOptions = [], useLocaleStructure = true, removeComments = true, } = options;
43
53
  const pluginName = "vite-plugin-msgfmt";
44
54
  async function compilePoFiles() {
45
55
  try {
@@ -76,6 +86,22 @@ export function msgfmtPlugin(options) {
76
86
  console.log(`[${pluginName}] Running msgfmt with: ${args.join(" ")}`);
77
87
  }
78
88
  await execa("msgfmt", args);
89
+ // Remove comments from XML output if requested
90
+ if (removeComments !== false) {
91
+ try {
92
+ const content = await fs.readFile(outputFile, 'utf-8');
93
+ const cleanedContent = removeXmlComments(content);
94
+ await fs.writeFile(outputFile, cleanedContent, 'utf-8');
95
+ if (verbose) {
96
+ console.log(`[${pluginName}] Removed comments from ${outputFile}`);
97
+ }
98
+ }
99
+ catch (error) {
100
+ if (verbose) {
101
+ console.warn(`[${pluginName}] Failed to remove comments: ${error}`);
102
+ }
103
+ }
104
+ }
79
105
  }
80
106
  else {
81
107
  // Find available languages for individual processing
@@ -1 +1 @@
1
- {"version":3,"file":"msgfmt.js","sourceRoot":"","sources":["../src/msgfmt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"msgfmt.js","sourceRoot":"","sources":["../src/msgfmt.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -81,6 +81,8 @@ export interface MsgfmtPluginOptions {
81
81
  msgfmtOptions?: string[];
82
82
  /** Whether to use the standard locale structure (locale/LANG/LC_MESSAGES/domain.mo) */
83
83
  useLocaleStructure?: boolean;
84
+ /** Whether to remove XML comments from output files, defaults to true */
85
+ removeComments?: boolean;
84
86
  }
85
87
  export interface PluginOptions {
86
88
  pluginName: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gjsify/vite-plugin-gettext",
3
- "version": "0.2.5",
3
+ "version": "0.2.6",
4
4
  "description": "Vite plugin for compiling Gettext PO files",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
package/src/msgfmt.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { type Plugin } from "vite";
2
2
  import { execa } from "execa";
3
3
  import path from "node:path";
4
+ import fs from "node:fs/promises";
4
5
  import type { MsgfmtPluginOptions, MsgfmtFormat } from "./types.js";
5
6
  import {
6
7
  checkDependencies,
@@ -8,6 +9,16 @@ import {
8
9
  ensureDirectory,
9
10
  } from "./utils.js";
10
11
 
12
+ /**
13
+ * Remove XML comments from a file content
14
+ * @param content The XML content as string
15
+ * @returns The content with comments removed
16
+ */
17
+ function removeXmlComments(content: string): string {
18
+ // Remove XML comments <!-- ... -->
19
+ return content.replace(/<!--[\s\S]*?-->/g, '');
20
+ }
21
+
11
22
  /**
12
23
  * Get output file extension based on the format
13
24
  * @param format The output format
@@ -55,6 +66,7 @@ export function msgfmtPlugin(options: MsgfmtPluginOptions): Plugin {
55
66
  verbose = false,
56
67
  msgfmtOptions = [],
57
68
  useLocaleStructure = true,
69
+ removeComments = true,
58
70
  } = options;
59
71
 
60
72
  const pluginName = "vite-plugin-msgfmt";
@@ -107,6 +119,23 @@ export function msgfmtPlugin(options: MsgfmtPluginOptions): Plugin {
107
119
  }
108
120
 
109
121
  await execa("msgfmt", args);
122
+
123
+ // Remove comments from XML output if requested
124
+ if (removeComments !== false) {
125
+ try {
126
+ const content = await fs.readFile(outputFile, 'utf-8');
127
+ const cleanedContent = removeXmlComments(content);
128
+ await fs.writeFile(outputFile, cleanedContent, 'utf-8');
129
+
130
+ if (verbose) {
131
+ console.log(`[${pluginName}] Removed comments from ${outputFile}`);
132
+ }
133
+ } catch (error) {
134
+ if (verbose) {
135
+ console.warn(`[${pluginName}] Failed to remove comments: ${error}`);
136
+ }
137
+ }
138
+ }
110
139
  } else {
111
140
  // Find available languages for individual processing
112
141
  const languages = await findAvailableLanguages(
package/src/types.ts CHANGED
@@ -94,6 +94,8 @@ export interface MsgfmtPluginOptions {
94
94
  msgfmtOptions?: string[];
95
95
  /** Whether to use the standard locale structure (locale/LANG/LC_MESSAGES/domain.mo) */
96
96
  useLocaleStructure?: boolean;
97
+ /** Whether to remove XML comments from output files, defaults to true */
98
+ removeComments?: boolean;
97
99
  }
98
100
 
99
101
  export interface PluginOptions {