搭建TypeScript的NodeJS运行环境

5,533 阅读1分钟

使用npm初始化项目

npm init -y

初始化项目后,可以得到一个基本的package.json文件,大概长这个样子:

{
  "name": "environment",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

安装依赖

全局依赖安装

npm i -g typescript ts-node
  • typescript是ts的基础支持,并会产生一个tsc命令,进行ts=>js单文件转换。
  • ts-node相当于一个ts版的nodejs

我这里进行npm-g的安装时,需要加sudo。如果你那边也提示权限不足,也可以加sudo试试

运行项目

写一个简单的测试脚本test.ts

const output: string = 'Hello World'
console.log(output)

运行ts-node test.ts

% ts-node test.ts
Hello World

项目工程配置

去差异话,使用npm test运行项目测试脚本

"scripts": {
  "test": "ts-node test"
}

执行测试脚本:

% npm test
> environment@1.0.0 test /ts-learn/environment
> ts-node test

Hello World

工程层面的另一种ts支持方案

刚才提到了,如果我们在项目中运行:

tsc test.ts

那么typescript引擎将会针对项目中的所有ts文件,生成一个对应的js文件(默认为commonjs模块格式)。

根据这个特性,我们可以通过更改package.json流程控制:先生成test.js,而后让node运行test.js,来实现nodets的伪支持。

"scripts": {
  "test": "tsc test.ts && node test"
}

或者使用pre/post控制流程

"scripts": {
  "pretest": "tsc test.ts",
  "test": "node test"
}

运行npm test之后,可以看到产生了一个test.js文件:

var output = 'Hello World';
console.log(output);

这种方式的优点是省去了ts-node这个依赖,环境更纯粹。缺点是会产生额外的js文件,尤其是ts文件较多时,处理比较麻烦。


就酱。