Node-Typescript-样板项目
用TypeScript编写的Node.js应用程序骨架
目的
我们创建这个骨架项目的主要目的是用Node.js和TypeScript启动服务器应用程序。 试试看!我很乐意听到您的反馈或任何新功能的建议。
常见特性
- 快速启动
- 基于TypeScript语法的简单脚手架
- 易于全局环境配置和错误处理
- 灵活添加新功能
- 持续集成
- 添加了Github Action工作流
- sonarcloud.io
- snyk.io
- CodeQL
- njsscan 是一个静态应用程序测试(SAST)工具,可以在您的node.js应用程序中找到不安全的代码模式
- Codeclimate
- 文档标准
- 支持Swagger文档和Postman集合
- readme文件中的清晰说明
- 测试覆盖率维护
- 全面的测试覆盖,集成了eslint、prettier和husky
- 生产就绪设置
- 遵循安全和效率的最佳实践
- 集成了Winston日志记录器,仅包含必要的npm模块
核心NPM模块
-
express
,@types/express
-
@types/node
-
typescript
-
dotenv
-
cors
-
helmet
-
http-status-codes
-
winston
启动应用程序
在开发模式下启动应用程序
- 克隆应用程序
git clone https://github.com/santoshshinde2012/node-boilerplate.git
- 安装依赖
npm install
- 启动应用程序
npm run dev
在生产模式下启动应用程序
- 安装依赖
npm install
- 创建构建
npm run build
- 启动应用程序
npm run start
- 启动前请确保更新您的
.env
值,可参考.env.example
项目结构
名称 | 描述 |
---|---|
wiki/ | 您可以在这里添加项目文档和说明文件 |
src/ | 源文件 |
src/abstractions | 抽象类和接口 |
src/components | REST API 组件和控制器 |
src/lib | 可重用的实用程序和库源代码,如日志记录器 |
src/middleware/ | Express 中间件,如错误处理功能 |
build/ | 编译后的源文件将放置在这里 |
tests/ | 测试用例将放置在这里 |
tests/helpers/ | 测试用例的辅助函数将放置在这里 |
tests/unit-tests/ | 单元测试用例将放置在这里 |
tests/integration-tests/ | API 路由(集成)测试用例将放置在这里 |
工作流程
加密
将 APPLY_ENCRYPTION
环境变量设置为 true
以启用加密。
Swagger API 文档
Swagger 文档可在以下 URL 获取 ${host}/docs
:
http://localhost:8080/docs
默认系统健康状态 API
${host}/api/system/info
- 在响应中返回系统信息${host}/system/time
- 在响应中返回当前时间${host}/system/usage
- 在响应中返回进程和系统内存使用情况${host}/system/process
- 在响应中返回进程详情${host}/system/error
- 在响应中返回生成的错误对象
Postman 集合
参考资料
注意事项
1. 为什么我的 git pre-commit 钩子默认不可执行?
- 因为文件默认不可执行;必须将它们设置为可执行。
chmod ug+x .husky/*
chmod ug+x .git/hooks/*
2. 生产最佳实践:安全性
- 不要使用过时或有漏洞的 Express 版本
- 使用 TLS
- 使用 Helmet
- 安全地使用 cookies
- 防止针对授权的暴力攻击
- 确保您的依赖项是安全的
- 避免其他已知漏洞
- 其他注意事项
3. 教程
- 用 TypeScript 编写的 Node.js 应用程序骨架(包括 ESLint、Prettier 和 Husky 的设置说明)
- 使用 Express 和 TypeScript 在 Node JS 中实现全局错误和响应处理
- TypeScript 和 Node.js 中使用 Jest 进行测试的初学者指南
- 使用 SonarQube 对 Node.js 和 TypeScript 项目进行静态代码分析
- Node.js 事件发射器的可视化