我可以从命令行启动tsc
编译器,如下所示:
../../node_modules/.bin/tsc
我想将其合并到节点构建脚本中。
有一个供节点使用的Typescript编译器,但设置工作似乎更多,而不仅仅是炮轰。您必须提取所有正确的文件等。
我有此代码:
fs.emptyDirSync(paths.appBuild);
const json = ts.parseConfigFileTextToJson(tsconfig, ts.sys.readFile(tsconfig), true);
const { options } = ts.parseJsonConfigFileContent(json.config, ts.sys, path.dirname(tsconfig));
options.configFilePath = paths.tsConfig;
options.outDir = outDir;
options.src = src;
options.noEmitOnError = true;
options.pretty = true;
options.sourceMap = process.argv.includes('--source-map');
let rootFile = path.join(process.cwd(), 'src/index.tsx');
if (!fs.existsSync(rootFile)) {
rootFile = path.join(process.cwd(), 'src/index.ts');
}
const host = ts.createCompilerHost(options, true);
const prog = ts.createProgram([rootFile], options, host);
const result = prog.emit();
但这将丢失未导入RootFile
中的文件。
如何简单地从节点中插入tsc
exe文件?
答案 0 :(得分:2)
您可以使用child_process.exec
:
const path = require('path');
const { exec } = require('child_process');
const tscPath = path.join(__dirname, '../../node_modules/.bin/tsc');
const tsc = exec(`${tscPath} ${process.argv.slice(2).join(' ')}`);
tsc.stdout.on('data', data => console.log(data));
tsc.stderr.on('data', data => console.error(data));
tsc.on('close', code => console.log(`tsc exited with code ${code}`));