概述:此处有Typescript好处各种,Node.js好处各种,所以两者结合一下。
1. 安装环境
win10 64位
node: v8.12.0
npm: 6.1.0
复制代码
- 项目构建
- 首先建立目录,并初始化node项目
# 创建目录
mkdir ts-node-example
cd ts-node-example
# 初始化node项目
npm init -y
npm i --save-dev ts-node
复制代码
之后创建tsconfig.json
配置文件,用来指定编译该项目的相关选项,该文件需在TypeScript项目的根目录下,类似于webpack的package.json配置。其内容为
{
// 编译选项,可以被忽略,这时编译器会使用默认值
"compilerOptions": {
// 目标代码类型
"target": "es5",
// 指定生成哪个模块系统代码
"module": "commonjs",
// 生成相应的.d.ts文件
"declaration": true,
// 编译后结果所在目录
"outDir": "build"
}
}
复制代码
tsconfig.json
的相关配置文档;
- 建立TypeScript + Node.js 项目
全局安装typescript
npm i -g typescript
// 创建src目录,用于放置.ts文件
mkdir src
复制代码
在src目录下,创建index.ts文件,内容为
console.log('Hello World!');
复制代码
之后修改package.json
{
"name": "ts-node-example",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
// 添加compile
"compile": "tsc",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"ts-node": "^7.0.1"
}
}
复制代码
运行npm run compile
项目目录变为
├── build
│ ├── index.d.ts
│ └── index.js
├── node_modules
├── package.json
├── package-lock.json
├── src
│ └── index.ts
└── tsconfig.json
复制代码
- 构建dev环境
监听src目录下.ts文件的变化,如果发生变化,重新加载。
npm i --save-dev nodemon
// 局部安装typescript
npm i --save-dev typescript
复制代码
然后将ts-node并将其指向src的入口文件
{
"name": "ts-node-example",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"compile": "tsc && node build/index.js",
// 添加 dev
"dev": "nodemon --exec ./node_modules/.bin/ts-node -- ./src/index.ts",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"nodemon": "^1.18.9",
"ts-node": "^7.0.1",
"typescript": "^3.2.2"
}
}
复制代码
运行npm run dev
- 构建TypeScript Module
在src目录下创建greeter.ts
文件
├── build
│ ├── index.d.ts
│ └── index.js
├── node_modules
├── package.json
├── package-lock.json
├── src
│ └── index.ts
│ └── greeter.ts
└── tsconfig.json
复制代码
其内容为
export function Greeter(name: string): string {
return 'Hello there, ' + name + '!'
}
复制代码
在index.ts中引入,有两种引入方式
import { Greeter } from './lib/greeter'
/*
import action = require('./lib/greeter')
const { Greeter } = action
*/
console.log(Greeter('Yang'));
复制代码
- 总结 一步步来吧,应该没啥问题,记得把
.json
里面的注释删掉就好。主要参考