概述:此處有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
裡面的註釋刪掉就好。主要參考