Skip to content

Ts Writer is a simple and lightweight library to generate js and dts files using template strings.

License

Notifications You must be signed in to change notification settings

kitajs/ts-writer

Repository files navigation

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!


Kita JS logo


License Codecov Downloads Bundlephobia Last commit Stars


🧾 Ts Writer

Ts Writer is a simple and lightweight library to generate js and dts files using template strings.

Table of Contents


Installing

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';

Getting Started

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.

Generating code

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';"
  };
}

Syntax Highlighting

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:

example

License

Licensed under the MIT. See LICENSE for more informations.