Skip to content

Commit ef16f80

Browse files
authored
fix: re-export ESM types in CommonJS (#416)
1 parent 835ddf9 commit ef16f80

7 files changed

Lines changed: 33 additions & 18 deletions

File tree

packages/config-array/rollup.config.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@ export default {
1616
plugins: [
1717
copy({
1818
targets: [
19-
{ src: "src/types.ts", dest: "dist/cjs", rename: "types.cts" },
20-
{ src: "src/types.ts", dest: "dist/esm" },
19+
{
20+
src: "src/types.ts",
21+
dest: "dist/esm",
22+
},
2123
],
2224
}),
2325
],

packages/config-helpers/rollup.config.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@ export default {
1616
plugins: [
1717
copy({
1818
targets: [
19-
{ src: "src/types.ts", dest: "dist/cjs", rename: "types.cts" },
20-
{ src: "src/types.ts", dest: "dist/esm" },
19+
{
20+
src: "src/types.ts",
21+
dest: "dist/esm",
22+
},
2123
],
2224
}),
2325
],

packages/core/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"access": "public"
1818
},
1919
"scripts": {
20-
"build:cts": "node -e \"fs.cpSync('dist/esm/types.d.ts', 'dist/cjs/types.d.cts')\"",
20+
"build:cts": "node ../../tools/build-cts.js dist/esm/types.d.ts dist/cjs/types.d.cts",
2121
"build": "tsc && npm run build:cts",
2222
"lint:types": "attw --pack",
2323
"pretest": "npm run build",

packages/object-schema/rollup.config.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@ export default {
1616
plugins: [
1717
copy({
1818
targets: [
19-
{ src: "src/types.ts", dest: "dist/cjs", rename: "types.cts" },
20-
{ src: "src/types.ts", dest: "dist/esm" },
19+
{
20+
src: "src/types.ts",
21+
dest: "dist/esm",
22+
},
2123
],
2224
}),
2325
],

packages/plugin-kit/rollup.config.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@ export default {
1616
plugins: [
1717
copy({
1818
targets: [
19-
{ src: "src/types.ts", dest: "dist/cjs", rename: "types.cts" },
20-
{ src: "src/types.ts", dest: "dist/esm" },
19+
{
20+
src: "src/types.ts",
21+
dest: "dist/esm",
22+
},
2123
],
2224
}),
2325
],

templates/package/rollup.config.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@ export default {
1616
plugins: [
1717
copy({
1818
targets: [
19-
{ src: "src/types.ts", dest: "dist/cjs", rename: "types.cts" },
20-
{ src: "src/types.ts", dest: "dist/esm" },
19+
{
20+
src: "src/types.ts",
21+
dest: "dist/esm",
22+
},
2123
],
2224
}),
2325
],

tools/build-cts.js

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
/**
2-
* @fileoverview Rewrites import expressions for CommonJS compatibility.
3-
* This script creates "dist/cjs/index.d.cts" from "dist/esm/index.d.ts" by modifying imports
4-
* from `"./types.ts"` to `"./types.cts"`.
2+
* @fileoverview Creates a CommonJS type declaration file that re-exports ESM types.
53
*
6-
* node tools/build-cts.js /path/to/esm/index.d.ts path/to/cjs/index.d.cts
4+
* Usage:
5+
* node tools/build-cts.js /path/to/esm/index.d.ts /path/to/cjs/index.d.cts
76
*
87
* @author Francesco Trotta
98
*/
109

11-
import { readFile, writeFile } from "node:fs/promises";
10+
import { mkdir, writeFile } from "node:fs/promises";
11+
import path from "node:path/posix";
1212

1313
const filename = process.argv[2];
1414
const newFilename = process.argv[3];
@@ -23,7 +23,12 @@ if (!newFilename) {
2323
process.exit(1);
2424
}
2525

26-
const oldSourceText = await readFile(filename, "utf-8");
27-
const newSourceText = oldSourceText.replaceAll('"./types.ts"', '"./types.cts"');
26+
const newDir = path.dirname(newFilename);
27+
const esmPath = path.relative(newDir, filename).replace(/\.d\.ts$/u, ".js");
28+
const newSourceText = `
29+
import type * as types from "${esmPath}" with { "resolution-mode": "import" };
30+
export = types;
31+
`.trimStart();
2832

33+
await mkdir(newDir, { recursive: true });
2934
await writeFile(newFilename, newSourceText);

0 commit comments

Comments
 (0)