我居然很难找到这个问题的答案。使用普通node .js,你可以运行任何节点路径为/to/file.js的js文件,使用CoffeeScript它是coffee hello。咖啡和ES6有babel节点hello.js。我如何用Typescript做同样的事情?
我的项目有一个tsconfig。Webpack/ts-loader使用它来为浏览器构建一个漂亮的小bundle。在此之前,我需要从控制台运行一个构建步骤,不过,这将使用项目中使用的一些.ts文件来生成模式,但我似乎无法在不编译整个项目的情况下运行单个Typescript文件。
编辑:2022年5月
Ts-node现在有一个——esm标志。
旧的回答:
其他答案都没有讨论如何运行使用模块的TypeScript脚本,特别是现代ES模块。
首先,截至2020年3月,ts-node在这种情况下无法工作。所以我们把tsc和node放在一起。
其次,TypeScript仍然不能输出.mjs文件。因此,我们将满足于.js文件和package.json中的"type": "module"。
第三,你想要干净的导入行,而不指定.js扩展名(这在.ts文件中会令人困惑):
import { Lib } from './Lib';
这是很重要的。Node需要在导入时指定扩展,除非使用experimental- specification -resolution= Node标志。在这种情况下,当你只在导入行上指定./Lib时,它将使Node能够查找Lib.js或Lib/index.js。
第四,还有一个问题:如果包中的主文件名与index.js不同,Node将找不到它。
编译比运行普通Node要麻烦得多。
下面是一个带有现代TypeScript项目结构的示例repo,生成ES Module代码。