https://github.com/mohd-akram/tisk
Alternative TypeScript compiler CLI
https://github.com/mohd-akram/tisk
compiler node nodejs npm tsc typescript
Last synced: about 1 year ago
JSON representation
Alternative TypeScript compiler CLI
- Host: GitHub
- URL: https://github.com/mohd-akram/tisk
- Owner: mohd-akram
- License: mit
- Created: 2018-10-10T06:33:56.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-01-13T08:58:01.000Z (over 2 years ago)
- Last Synced: 2025-03-18T10:44:33.670Z (about 1 year ago)
- Topics: compiler, node, nodejs, npm, tsc, typescript
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/tisk
- Size: 31.3 KB
- Stars: 13
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
tisk
====
`tisk` is a simpler alternative to `tsc`, the standard TypeScript compiler CLI.
Synopsis
--------
```
usage: tisk [-h] [-v] [-o OUTPUT] [-d] [-m] [-p PATH] [-W WARNING]
[file [file ...]]
```
Examples
--------
```shell
# Output to stdout
echo "console.log('Hello, world')" | tisk | node
# All warnings as errors
tisk -Werror -o lib src
# Specific warnings as errors
tisk -Werror=implicit-any -Wimplicit-this -o lib src
# Source maps
tisk -m -o lib src
# Declarations
tisk -d -o lib src
# Map external import paths based on output directory
# Input: src/main.ts: import * as vendor from '../vendor'
# Output: dist/lib/main.js: import * as vendor from '../../vendor'
tisk -p vendor -o dist/lib src
# or
# Input: src/main.ts: import * as vendor from '../vendor'
# Output: dist/lib/main.js: import * as vendor from '../../libs'
tisk -p vendor:libs -o dist/lib src
```
Differences from `tsc`
----------------------
`tisk` follows references to imports but does not compile them. To illustrate
this:
```terminal
$ mkdir example && cd example
$ mkdir src && echo "export {}" > src/index.ts
$ echo "import * as m from './src';" > main.ts
$ tsc --outDir lib main.ts
$ ls lib
main.js src
$ rm -r lib
$ tisk -o lib main.ts
$ ls lib
main.js
```
As you can see, `tsc` brings in the `src` directory, compiles it, and outputs
the result to `lib` while `tisk` only compiles the input files provided.
Because `tisk` behaves this way, its output is completely predictable and you
can, for example, run it in parallel, splitting the input set any way you want.
### Automatic relative import path mapping
`tisk` will automatically fix relative import paths among the set of input
files and directories. This can allow you to, for example, combine two
directories:
```terminal
$ tisk -o lib src1 src2
```
If a file in `src2` imports from `src1` like so:
```typescript
import * as foo from '../src1/foo';
```
On output, it will be transformed to:
```javascript
import * as foo from './foo';
```
To map import paths that aren't in the set of inputs (eg. they might be
compiled in a separate invocation), use the `-p` option as shown in the
examples above.
Warnings
--------
```javascript
{
'strict': 'strict',
'implicit-any': 'noImplicitAny',
'implicit-returns': 'noImplicitReturns',
'implicit-this': 'noImplicitThis',
'implicit-fallthrough': 'noFallthroughCasesInSwitch',
'unused-locals': 'noUnusedLocals',
'unused-parameters': 'noUnusedParameters'
}
```