Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/kitajs/ts-writer

Ts Writer is a simple and lightweight library to generate js and dts files using template strings.
https://github.com/kitajs/ts-writer

code dts generator js kita source strings template ts writer

Last synced: about 14 hours ago
JSON representation

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

Awesome Lists containing this project

README

        


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

- [Table of Contents](#table-of-contents)
- [Installing](#installing)
- [Getting Started](#getting-started)
- [Generating code](#generating-code)
- [Syntax Highlighting](#syntax-highlighting)
- [License](#license)


## Installing

```sh
npm install ts-writer # or yarn add ts-writer
```

```js
const { TsWriter } = require('ts-writer');
import { TsWriter } from 'ts-writer';
```

```js
const { TsWriter } = window.tsWriter;
```

```js
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:

```ts
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`](https://marketplace.visualstudio.com/items?itemName=bierner.comment-tagged-templates)
extension will highlight the template strings if you put `/*ts*/` comment between the `ts`
and its backticks:

![example](assets/syntax-highlighting.png)

## License

Licensed under the **MIT**. See [`LICENSE`](LICENSE) for more informations.