Node.js + TypeScript项目搭建

TypeScript作为JavaScript的超集,为后端开发带来了类型安全和更好的开发体验。结合Node.js的强大生态系统,可以构建健壮且可维护的后端服务。本文将详细介绍如何从零开始搭建一个Node.js + TypeScript项目。

1. 初始化项目

首先,创建一个新目录并初始化npm项目:

bash 复制代码
mkdir node-ts-project
cd node-ts-project
npm init -y

2. 安装TypeScript

安装TypeScript作为开发依赖:

bash 复制代码
npm install typescript --save-dev
npm install @types/node --save-dev

3. 配置TypeScript

创建TypeScript配置文件tsconfig.json

json 复制代码
{
  "compilerOptions": {
    "target": "ES2020",
    "module": "commonjs",
    "outDir": "./dist",
    "rootDir": "./src",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "moduleResolution": "node",
    "baseUrl": ".",
    "paths": {
      "@/*": ["src/*"]
    }
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules"]
}

4. 项目目录结构

建议采用以下目录结构:

复制代码
node-ts-project/
├── src/
│   ├── controllers/
│   ├── services/
│   ├── models/
│   ├── routes/
│   ├── utils/
│   └── app.ts
├── tests/
├── .env
├── package.json
├── tsconfig.json
└── README.md

5. 安装开发工具

安装必要的开发工具:

bash 复制代码
npm install --save-dev ts-node nodemon eslint prettier

配置nodemon.json用于开发时自动重启:

json 复制代码
{
  "watch": ["src"],
  "ext": "ts,json",
  "ignore": ["src/**/*.spec.ts"],
  "exec": "ts-node ./src/app.ts"
}

package.json中添加脚本:

json 复制代码
{
  "scripts": {
    "dev": "nodemon",
    "build": "tsc",
    "start": "node dist/app.js",
    "test": "jest"
  }
}

6. 添加Express框架(可选)

如果需要Web框架,可以安装Express:

bash 复制代码
npm install express
npm install --save-dev @types/express

创建一个简单的Express应用示例src/app.ts

typescript 复制代码
import express, { Application, Request, Response } from 'express';

const app: Application = express();
const PORT = process.env.PORT || 3000;

app.get('/', (req: Request, res: Response) => {
  res.send('Hello from Node.js + TypeScript!');
});

app.listen(PORT, () => {
  console.log(`Server is running on http://localhost:${PORT}`);
});

7. 环境变量管理

安装dotenv管理环境变量:

bash 复制代码
npm install dotenv

创建.env文件:

复制代码
PORT=3000
NODE_ENV=development

更新src/app.ts

typescript 复制代码
import 'dotenv/config';
// ...其余代码

8. 构建与运行

开发模式:

bash 复制代码
npm run dev

生产构建:

bash 复制代码
npm run build
npm run start

9. 添加测试支持(可选)

安装Jest测试框架:

bash 复制代码
npm install --save-dev jest ts-jest @types/jest

配置jest.config.js

javascript 复制代码
module.exports = {
  preset: 'ts-jest',
  testEnvironment: 'node',
  moduleNameMapper: {
    '^@/(.*)$': '<rootDir>/src/$1'
  }
};

10. 代码质量工具(可选)

配置ESLint和Prettier:

bash 复制代码
npm install --save-dev eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin prettier eslint-config-prettier eslint-plugin-prettier

创建.eslintrc.js

javascript 复制代码
module.exports = {
  root: true,
  parser: '@typescript-eslint/parser',
  plugins: ['@typescript-eslint', 'prettier'],
  extends: [
    'eslint:recommended',
    'plugin:@typescript-eslint/recommended',
    'plugin:prettier/recommended'
  ],
  rules: {
    '@typescript-eslint/explicit-module-boundary-types': 'off'
  }
};

创建.prettierrc

json 复制代码
{
  "semi": true,
  "singleQuote": true,
  "printWidth": 100,
  "tabWidth": 2,
  "trailingComma": "all"
}

总结

通过以上步骤,我们建立了一个完整的Node.js + TypeScript项目框架,包含了:

  1. TypeScript配置
  2. 开发工具链(ts-node, nodemon)
  3. Express集成
  4. 环境变量管理
  5. 测试支持
  6. 代码质量工具

这种配置为后端开发提供了类型安全、良好的开发体验和可维护的代码基础。根据项目需求,可以进一步添加数据库集成、API文档生成等工具。