Merge pull request #284 from msgpack/gfx/pkg_exports · msgpack/msgpack-javascript@cf926e0 · GitHub
Skip to content

Commit cf926e0

Browse files
authored
Merge pull request #284 from msgpack/gfx/pkg_exports
add exports for ESM & CJS dual packages
2 parents 5e707a4 + 3934a8c commit cf926e0

3 files changed

Lines changed: 46 additions & 19 deletions

File tree

package.json

Lines changed: 15 additions & 2 deletions

tools/fix-ext.mts

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,39 @@ const mode = process.argv[2]; // --cjs or --mjs
44
const files = process.argv.slice(3);
55

66
const ext = mode === "--cjs" ? "cjs" : "mjs";
7+
const dtsExt = mode === "--cjs" ? "d.cts" : "d.mts";
78

89
console.info(`Fixing ${mode} files with extension ${ext}`);
910

1011
for (const file of files) {
11-
const fileMjs = file.replace(/\.js$/, `.${ext}`);
12-
console.info(`Processing ${file} => ${fileMjs}`);
13-
// .js => .mjs
14-
const content = fs.readFileSync(file).toString("utf-8");
15-
const newContent = content
16-
.replace(/\bfrom "(\.\.?\/[^"]+)\.js";/g, `from "$1.${ext}";`)
17-
.replace(/\bimport "(\.\.?\/[^"]+)\.js";/g, `import "$1.${ext}";`)
18-
.replace(/\brequire\("(\.\.?\/[^"]+)\.js"\)/g, `require("$1.${ext}");`)
19-
.replace(/\/\/# sourceMappingURL=(.+)\.js\.map$/, `//# sourceMappingURL=$1.${ext}.map`);
20-
fs.writeFileSync(fileMjs, newContent);
21-
fs.unlinkSync(file);
12+
if (file.endsWith(".d.ts")) {
13+
// Handle declaration files: .d.ts => .d.mts or .d.cts
14+
const newFile = file.replace(/\.d\.ts$/, `.${dtsExt}`);
15+
console.info(`Processing ${file} => ${newFile}`);
16+
const content = fs.readFileSync(file).toString("utf-8");
17+
// Fix import paths: .ts => .mjs or .cjs
18+
const newContent = content
19+
.replace(/\bfrom "(\.\.?\/[^"]+)\.ts";/g, `from "$1.${ext}";`)
20+
.replace(/\bimport "(\.\.?\/[^"]+)\.ts";/g, `import "$1.${ext}";`);
21+
fs.writeFileSync(newFile, newContent);
22+
fs.unlinkSync(file);
23+
} else if (file.endsWith(".js")) {
24+
// Handle JS files: .js => .mjs or .cjs
25+
const fileMjs = file.replace(/\.js$/, `.${ext}`);
26+
console.info(`Processing ${file} => ${fileMjs}`);
27+
const content = fs.readFileSync(file).toString("utf-8");
28+
const newContent = content
29+
.replace(/\bfrom "(\.\.?\/[^"]+)\.js";/g, `from "$1.${ext}";`)
30+
.replace(/\bimport "(\.\.?\/[^"]+)\.js";/g, `import "$1.${ext}";`)
31+
.replace(/\brequire\("(\.\.?\/[^"]+)\.js"\)/g, `require("$1.${ext}");`)
32+
.replace(/\/\/# sourceMappingURL=(.+)\.js\.map$/, `//# sourceMappingURL=$1.${ext}.map`);
33+
fs.writeFileSync(fileMjs, newContent);
34+
fs.unlinkSync(file);
2235

23-
// .js.map => .mjs.map
24-
const mapping = JSON.parse(fs.readFileSync(`${file}.map`).toString("utf-8"));
25-
mapping.file = mapping.file.replace(/\.js$/, ext);
26-
fs.writeFileSync(`${fileMjs}.map`, JSON.stringify(mapping));
27-
fs.unlinkSync(`${file}.map`);
36+
// .js.map => .mjs.map
37+
const mapping = JSON.parse(fs.readFileSync(`${file}.map`).toString("utf-8"));
38+
mapping.file = mapping.file.replace(/\.js$/, ext);
39+
fs.writeFileSync(`${fileMjs}.map`, JSON.stringify(mapping));
40+
fs.unlinkSync(`${file}.map`);
41+
}
2842
}

tsconfig.dist.cjs.json

Lines changed: 1 addition & 1 deletion

0 commit comments

Comments
 (0)