Tool for converting xsd files to typescript template classes
#tutorial:
Create an npm project(folder) with a package.json file with content:
{
"name": "template-ts",
"version": "0.1.0",
"description": "generated template classes for xsd",
"main": "index.js",
"scripts": {
"ts-gen": "ts-node ./src/generate.ts",
"makelib": "tsc -p ./src/generated",
"setup": "npm install"
},
"repository": {
"type": "github",
"url": "https://github.com/path/to/repo.git"
},
"author": "your name",
"license": "GPL",
"dependencies": {
"ts-loader": "2.2.2",
"ts-node": "3.3.0",
"typescript": "3.9.9",
"xsd2ts": "0.9.x"
}
}
Replace the value 'template-ts' for the name property by your own package name. Create a src folder inside this project folder. Create a typescript file named 'generate.ts' in this folder and add the following content:
import {generateTemplateClassesFromXSD} from "xsd2ts";
generateTemplateClassesFromXSD('./yourXsdFile.xsd');
When dependencies must be included you can specify these as follows:
import {generateTemplateClassesFromXSD} from "xsd2ts";
generateTemplateClassesFromXSD('./dependency.xsd');
generateTemplateClassesFromXSD('./yourXsdFile.xsd', {libname, './dependency'});
The libname should equal the namespace for this dependency to generate the right import statements
You can specify a dependency for the default namespace with the third parameter when you omit this parameter it will deault to the name "xmlns"
import {generateTemplateClassesFromXSD} from "xsd2ts";
generateTemplateClassesFromXSD('./dependency.xsd');
generateTemplateClassesFromXSD('./yourXsdFile.xsd', {defaultns, './dependency'},defaultns);
Extra logging can be turned on by calling verbose()
import {generateTemplateClassesFromXSD,verbose} from "xsd2ts";
verbose();
generateTemplateClassesFromXSD('./dependency.xsd');
Generate a folder 'src/generated' with index.ts file by executing:
npm run ts-gen
Compile the generated index.ts file and generate declaration file by executing:
npm run makelib
Then publish your npm package:
npm publish
Now you can use the npm lib in other npm projects by installing it:
npm install --save <your npm package name>
Remark: There was an error in version 3.1: it did not emit an index.ts