node.js - Hur man renderar en TypeScript-fil till JavaScript programmässigt?


Jag försöker lista ut hur man programmässigt renderar en TypeScript-fil till en JavaScript-fil.

Är detta möjligt att göra med ts-node till exempel så här:

function tsMiddleware (req, res, next) {
    var parsed = require('url').parse(req.url);

    if (parsed.pathname.match(/\.ts$/)) {
        return ts(parsed.pathname).then(function (o) {
            res.setHeader('Content-Type', 'text/js');
            res.end(o.js);
        }).catch((err) => {
            console.log(err);
        });
    }
    next();

    function ts(src) {
        return new Promise((resolve, reject) => {
            require('ts-node').render({
                file: 'src' + src
            }, function (err, res) {
                if (err) {
                    reject(err);
                } else {
                    resolve(res);
                }
            });
        });
    }
}

Jag vill inte köra ts-filen i nodejs, utan bara kompilera ts-filen och skicka utdata tillbaka till webbläsaren.

Svar #1

Här är ett exempel:

const ts = require("typescript")
async function tsTranspile(tsCode) {
    return await ts.transpileModule(tsCode, { /* Here the compiler options */ })
}

Hur man använder det:

tsTranspile("const f = a => a + 1")
    .then(jsCode => console.log(jsCode))
    .catch(err => console.log("Error:", err))

Läs också:

  • Att använda Compiler API;
  • Compileralternativ.

Relaterade artiklar