Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
src
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Minimal usable interface for TypeScript compiler

$ npm install tsc-simple

create compiler with default options and default library, compile a string

import {createCompiler, CompileResult} from 'tsc-simple';

const compiler = createCompiler({defaultLibLocation: 'node_modules/typescript/lib'});

const r: CompileResult = compiler.compile('let x = 3 + 2');

the following properties and methods are available in CompileResult:

    sourceFile: ts.SourceFile;
    diagnostics: Diagnostic[];
    program: ts.Program;
    formatDiagnostic(d: ts.Diagnostic): string;
    getSourceFileNames(): string[];
    getSourceFile(name: string): ts.SourceFile;

tsc-simple compiler does not write any files. If you need to obtain generated javascript, declaration files, or sourcemaps, you have to provide onOutput callback as the second argument to compile:

    const out: {[name: string]: string} = {};

    const r = compiler.compile('let x = 3 + 2', (name, text) => {out[name] = text});

create compiler with specific options and library files

    const tsconfig = {
        "compilerOptions": {
            "declaration": true,
            "noLib": true,
            "typeRoots": []
        },
        "files": [
            "node_modules/typescript/lib/lib.es5.d.ts",
            "node_modules/typescript/lib/lib.es2015.core.d.ts"
        ]
    };

    const compiler = createCompiler({tsconfig});

    const r = compiler.compile('let x = z + 2');
    const messages = r.diagnostics.map(d => r.formatDiagnostic(d));
    console.dir(messages);     // ['<source>(1,9): Error TS2304: Cannot find name \'z\'.']

compile two modules, one importing another

    const r = compiler.compileMap(new Map([
        ['A.ts', 'export class A {}'],
        ['B.ts', `import {A} from 'A'; export class B extends A {}`]
    ]));

check syntax only, without name binding, type checking and emitting

    const r = compiler.parse('let x = z + 2');
    console.log(r.diagnostics.length); // 0 = no errors

About

Minimal usable interface for TypeScript compiler

Topics

Resources

License

Packages

No packages published
You can’t perform that action at this time.