Using this package? Please consider donating to support my open source work ❤️
Help ts-writer grow! Star and share this amazing repository with your friends and co-workers!
Ts Writer is a simple and lightweight library to generate js and dts files using template strings.
npm install ts-writer # or yarn add ts-writer
const { TsWriter } = require('ts-writer');
import { TsWriter } from 'ts-writer';
const { TsWriter } = window.tsWriter;
import { TsWriter } from 'https://cdn.skypack.dev/ts-writer@latest';
Ts Writer is a simple and lightweight library to generate js and dts files using template strings. It is very simple to use and has a very small footprint, perfect designed to be used in CLIs and Code generation tools.
There's numerous reasons why code generation increases performance even as javascript is a JIC interpreted language, this library helps you to generate the code you need at runtime in typescript without having to handle transpiling, multiple files, etc.
The syntax is pretty simple:
function generate() {
const { source, types } = ts`${'filename'}
// Any text here will be put inside the source.content variable above. Under
// the filename.js file.
// It will auto remove indentation if you call ts inside a indentation block.
// like this function.
exports = 'Hello World';
exports.__esModule = true;
${ts.types}
// If you want to also generate a filename.d.ts file, you can use the ts.types
// variable above. Everything after it will be put inside the types variable above.
// (filename.d.ts)
export default 'Hello World';
`;
// Source result
source = {
filename: 'filename.js',
content:
'// Any text here will be put inside the source.content variable above. Under\n' +
'// the filename.js file.\n' +
'\n' +
'// It will auto remove indentation if you call ts inside a indentation block.\n' +
'// like this function.\n' +
'\n' +
"exports = 'Hello World';\n" +
'exports.__esModule = true;'
};
// Types result
types = {
filename: 'filename.d.ts',
content:
'// If you want to also generate a filename.d.ts file, you can use the ts.types\n' +
'// variable above. Everything after it will be put inside the types variable above.\n' +
'// (filename.d.ts)\n' +
'\n' +
"export default 'Hello World';"
};
}
If you are using VSCode, the
bierner.comment-tagged-templates
extension will highlight the template strings if you put /*ts*/
comment between the ts
and its backticks:
Licensed under the MIT. See LICENSE
for more informations.