Skip to content

Commit 61401a9

Browse files
committed
Implemented dual support for ESM and CommonJS
1 parent 139df65 commit 61401a9

7 files changed

Lines changed: 50 additions & 15 deletions

File tree

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "typesxml",
33
"productName": "TypesXML",
4-
"version": "1.16.0",
4+
"version": "1.17.0",
55
"description": "Open source XML library written in TypeScript",
66
"keywords": [
77
"XML",
@@ -14,18 +14,31 @@
1414
"JSON"
1515
],
1616
"scripts": {
17-
"build": "tsc",
18-
"testDtd": "tsc && node dist/tests/DTDTestSuite.js",
19-
"testJson": "tsc && node dist/tests/JsonConversionTest.js"
17+
"build": "npm run build:cjs && npm run build:esm",
18+
"build:cjs": "tsc --project tsconfig.cjs.json",
19+
"build:esm": "tsc --project tsconfig.esm.json && node scripts/create-esm-package.cjs",
20+
"testDtd": "npm run build:cjs && node dist/cjs/tests/DTDTestSuite.js",
21+
"testJson": "npm run build:cjs && node dist/cjs/tests/JsonConversionTest.js"
2022
},
2123
"author": {
2224
"name": "Rodolfo M. Raya",
2325
"url": "https://maxprograms.com",
2426
"email": "rmraya@maxprograms.com"
2527
},
2628
"license": "EPL-1.0",
27-
"main": "dist/index.js",
28-
"types": "dist/index.d.ts",
29+
"main": "./dist/cjs/index.js",
30+
"module": "./dist/esm/index.js",
31+
"types": "./dist/esm/index.d.ts",
32+
"exports": {
33+
".": {
34+
"types": "./dist/esm/index.d.ts",
35+
"import": "./dist/esm/index.js",
36+
"require": "./dist/cjs/index.js",
37+
"default": "./dist/esm/index.js"
38+
},
39+
"./package.json": "./package.json",
40+
"./cjs/*": "./dist/cjs/*"
41+
},
2942
"files": [
3043
"/dist"
3144
],

samples/json-conversion.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
import {
2-
jsonObjectToXmlDocument,
3-
xmlStringToJsonObject,
4-
type JsonValue,
5-
type XmlJsonDocument
6-
} from "typesxml";
1+
import { jsonObjectToXmlDocument, xmlStringToJsonObject, type JsonValue, type XmlJsonDocument } from "typesxml";
72

83
function demoJsonToXml(): void {
94
const simpleJson: JsonValue = {

samples/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"json-conversion": "npm run build --silent && node dist/json-conversion.js"
1616
},
1717
"dependencies": {
18-
"typesxml": "^1.16.0"
18+
"typesxml": "^1.17.0"
1919
},
2020
"devDependencies": {
2121
"typescript": "^5.9.3"

scripts/create-esm-package.cjs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/usr/bin/env node
2+
const { mkdirSync, writeFileSync } = require('node:fs');
3+
const { join } = require('node:path');
4+
5+
const esmDir = join(__dirname, '..', 'dist', 'esm');
6+
mkdirSync(esmDir, { recursive: true });
7+
8+
const pkgPath = join(esmDir, 'package.json');
9+
const pkgContents = {
10+
type: 'module'
11+
};
12+
13+
writeFileSync(pkgPath, JSON.stringify(pkgContents, null, 2));

tsconfig.cjs.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"extends": "./tsconfig.json",
3+
"compilerOptions": {
4+
"outDir": "./dist/cjs"
5+
}
6+
}

tsconfig.esm.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"extends": "./tsconfig.json",
3+
"compilerOptions": {
4+
"module": "ES2022",
5+
"moduleResolution": "Bundler",
6+
"outDir": "./dist/esm"
7+
}
8+
}

0 commit comments

Comments
 (0)