Gun*_*ars 156 node.js typescript
我很难找到答案.使用普通的Node.JS,您可以运行任何js文件node path/to/file.js,使用CoffeeScript coffee hello.coffee和ES6 babel-node hello.js.如何使用Typescript做同样的事情?
我的项目有一个tsconfig.jsonWebpack/ts-loader用来为浏览器构建一个漂亮的小包.我需要在此之前从控制台运行构建步骤,但是,这将使用.ts项目中使用的一些文件来生成模式,但是我似乎无法在不编译的情况下运行单个Typescript文件整个项目.
bas*_*rat 216
我如何使用Typescript做同样的事情
您可以将tsc使用表模式下运行tsc -w -p .,它会产生.js在现场的时尚你的文件,这样你就可以运行node foo.js像正常
有ts节点:https://github.com/TypeStrong/ts-node将为您完成所有这些
Muh*_*zar 75
你也可以试试tsx。tsx 是一个用于无缝运行 TypeScript 的 CLI 命令(替代 Node),它基于 esbuild 构建,因此速度非常快。
https://github.com/esbuild-kit/tsx
例子:
npx tsx ./script.ts
Run Code Online (Sandbox Code Playgroud)
Zee*_*mad 68
运行以下命令并全局安装所需的包:
npm install -g ts-node typescript '@types/node'
Run Code Online (Sandbox Code Playgroud)
现在运行以下命令来执行打字稿文件:
ts-node typescript-file.ts
Run Code Online (Sandbox Code Playgroud)
Gin*_*een 51
我创建了@digitak/esrun ,它是esbuild的一个薄包装器,几乎可以立即执行 TypeScript 文件。esrun之所以制作是因为我对它感到失望ts-node:太慢了,而且大多数时候都不起作用。
esrun的优点包括ts-node:
esrun开箱即用),--watch,对条目文件或其任何依赖项的任何更改都将重新触发结果esrun在检查模式下使用 DevTools 控制台而不是终端控制台。安装后,只需运行:
npx @digitak/esrun file.ts
Run Code Online (Sandbox Code Playgroud)
小智 28
我们有以下步骤
首先,您需要安装打字稿
npm install -g typescript
2.创建一个文件helloword.ts
function hello(person){
return "Hello, " + person;
}
let user = "Aamod Tiwari";
const result = hello(user);
console.log("Result",result)
Run Code Online (Sandbox Code Playgroud)
3.打开命令提示符并键入以下命令
tsc helloward.ts
node helloward.js
ton*_*nes 17
要添加到上面的@Aamod答案中,如果要使用一个命令行来编译和运行代码,则可以使用以下命令:
视窗:
tsc main.ts | node main.js
Run Code Online (Sandbox Code Playgroud)
Linux / macOS:
tsc main.ts && node main.js
Run Code Online (Sandbox Code Playgroud)
Dan*_*scu 15
其他答案都没有讨论如何运行使用模块的 TypeScript 脚本,尤其是现代 ES 模块。
首先,截至 2020 年 3 月,ts-node在这种情况下不起作用。所以我们将满足tsc于node.
其次,TypeScript 还是不能输出.mjs文件。因此,我们会满足于.js文件和"type": "module"在package.json。
第三,您需要干净的import线条,而不指定.js扩展名(这会在.ts文件中造成混淆):
import { Lib } from './Lib';
Run Code Online (Sandbox Code Playgroud)
嗯,这很重要。除非您使用该标志,否则Node需要在导入时指定扩展名experimental-specifier-resolution=node。在这种情况下,它会使 Node 查找Lib.js或Lib/index.js当您只指定时./Lib就import行了。
第四,还有一个问题:如果您的main文件名与index.js包中的文件名不同,Node 将找不到它。
与运行普通 Node.js 相比,转译使事情变得更加混乱。
这是一个具有现代 TypeScript 项目结构的示例存储库,生成 ES 模块代码。
rob*_*obd 12
对于 linux / mac,您可以添加ts-node-scriptshebang。
全局安装 typescript / ts-node (非全局安装参见下面1 ):
npm install ts-node typescript --save-dev --global
Run Code Online (Sandbox Code Playgroud)
将其添加为文件中的第一行.ts:
#!/usr/bin/env ts-node-script
Run Code Online (Sandbox Code Playgroud)
然后使文件可执行:
$ chmod +x ./your-file.ts
Run Code Online (Sandbox Code Playgroud)
然后您可以直接从命令行运行该文件:
$ ./your-file.ts
Run Code Online (Sandbox Code Playgroud)
笔记:
1对于非全局安装,您可以在项目本地安装
npm install ts-node typescript --save-dev
Run Code Online (Sandbox Code Playgroud)
并将相对路径添加到 shebang 脚本,例如:
#!/usr/bin/env ./node_modules/.bin/ts-node-script
Run Code Online (Sandbox Code Playgroud)
2 ts-node v8.9.0中正式添加了对 shebangs 的支持。
bcb*_*ian 12
截至 2022 年 5 月,ts-node支持 es 模块
npx ts-node --esm file.ts
Run Code Online (Sandbox Code Playgroud)
您可能需要添加"type": "module",到您的package.json. 除非您打开,否则某些导入可能会很不稳定experimental-specifier-resolution=node
npmjs.com/package/ts-node#commonjs-vs-native-ecmascript-modules
小智 6
为自己编写一个简单的 bash 包装器可能会有所帮助。
#!/bin/bash
npx tsc $1 && node ${1%%.ts}
Run Code Online (Sandbox Code Playgroud)
对于Webstorm等环境,node命令不能更改为ts-node或npx:
npm install ts-node typescript(安装依赖项)node --require ts-node/register src/foo.ts(添加--require ts-node/register到“节点参数”)小智 6
这是命令
tsc index.ts --outDir .temp && node .temp/index.js && rm -rf .temp
<<<<<<<<< Compile >>>>>>>>> <<<<<<< Run >>>>>>> << Clean >>
就像Zeeshan Ahmad 的回答一样,我也认为ts-node是要走的路。我还会添加一个shebang并使其可执行,因此您可以直接运行它。
全局安装 typescript 和 ts-node:
npm install -g ts-node typescript
Run Code Online (Sandbox Code Playgroud)
或者
yarn global add ts-node typescript
Run Code Online (Sandbox Code Playgroud)创建一个hello包含以下内容的文件:
npm install -g ts-node typescript
Run Code Online (Sandbox Code Playgroud)
如您所见,第一行有 ts-node 的shebang
直接执行文件就可以运行
$ ./hello
Result: Hello, root
Run Code Online (Sandbox Code Playgroud)一些注意事项:
2020 年 4 月 6 日更新:在评论中大量输入后的一些更改:更新 shebang 以使用ts-node-script而不是ts-node,链接到 ts-node 中的问题。
| 归档时间: |
|
| 查看次数: |
135151 次 |
| 最近记录: |