讲师中心 微信公众号
AI工具推荐 视频效率加速

完整的nodejs +打字稿设置,带有汇总,开玩笑和诺迪尼

酷强吖_1510

酷强吖_1510

发布时间:2025-01-25 22:42:01

|

855人浏览过

|

来源于dev.to

转载

使用 typescript 构建 node.js 应用程序可能是现代 javascript 开发的绝佳选择。它提供类型安全、更好的工具,并且非常适合缩放。但当您将 typescript 与可靠的捆绑器、测试框架和自动重新加载相结合时,真正的力量就会显现出来。

在本文中,我们将逐步设置 node.js typescript 项目,其中使用 rollup、jest 进行测试,以及 nodemon 用于自动重新加载应用程序。

问题:繁忙的设置

使用 typescript 设置 node.js 项目通常感觉像是一项复杂、乏味的任务。您必须配置多个工具,例如 typescript、捆绑器(例如 rollup 或 webpack)、测试库和用于实时重新加载的 nodemon。这个过程通常涉及配置文件扩展名(如.js)、管理不同的环境以及处理各种配置,导致开发体验有些混乱。

在本文中,我将向您展示如何使用最新工具设置node.js typescript项目,这解决了这些问题并使设置顺利且可维护。此设置包括:

  • typescript 用于类型安全。

  • rollup 作为捆绑程序,由 esbuild 提供支持,以实现快速高效的构建。

  • 开玩笑用于测试您的应用程序。

  • nodemon 用于在开发过程中自动重新加载。

  • 导入模块的干净解决方案,无需在导入中指定 .js 扩展名。

此配置避免了设置这些工具通常的“忙碌”性质,并提供了更简化的体验。

先决条件:

  • node.js 安装在您的系统上。

  • 对 typescript 和 node.js 有基本了解。

完整的github代码

设置代码!

1. 设置项目

让我们首先使用 typescript 设置一个简单的 node.js 项目。

  1. 为您的项目创建一个新目录:

    mkdir app
    cd app
    
  2. 初始化一个新的 package.json:

    npm init -y
    
  3. 安装必要的依赖项:

    git-log-tracker
    git-log-tracker

    Git post-commit 钩子 + SQLite 提交索引工具。自动将每次提交的元数据(哈希值、作者、分支、仓库、主题)记录到本地 SQLite 数据库中,随后提供一个命令行接口(CLI),支持查询、列表展示、统计、删除和更新记录。 触发场景:管理 Git 钩子、跨仓库查询提交历史、定位某次提交所属的仓库、查看提交统计信息、将提交记录写入本地索引。 当用户提及“提交日志记录”、“提交索引”、“跨仓库查找提交”、“Git 钩子管理”,或希望以结构化方式查询其提交历史时(即使未明确指出该工具),请使

    下载
    npm install --save-dev typescript ts-node @types/node tslib ts-jest rollup rollup-lugin-esbuild
    nodemon jest @types/jest @rollup/plugin-node-resolve @rollup/plugin-commonjs
    
  4. 创建一个 tsconfig.json 文件:这将为我们的 node.js 环境配置 typescript。

    {
      "ts-node": {
        "esm": true //if ts-node is used globally
      },
        "compileroptions": {
          "target": "esnext",
          "module": "esnext",
          "outdir": "./dist",
          "strict": true,
          "esmoduleinterop": true,
          "moduleresolution": "node",
          "skiplibcheck": true,
          "resolvejsonmodule": true,
          "declaration": true,
          "sourcemap": true,
    
        },
        "include": ["src/**/*"],
        "exclude": ["node_modules", "dist", "tests"]
      }
    
    
  5. 创建一个 rollup.config.js 文件:此配置将捆绑您的应用程序以进行生产。

    import resolve from '@rollup/plugin-node-resolve';
    import commonjs from '@rollup/plugin-commonjs';
    import esbuild from 'rollup-plugin-esbuild';
    
    export default {
      input: './src/index.ts',
      output: {
        dir: 'dist',
        format: 'esm',
        sourcemap: true,
        banner: '#!/usr/bin/env node', // ensure cli compatibility
      },
      plugins: [
        resolve(),
        commonjs(),
        esbuild({
          target: 'esnext',     // set the target to 'esnext'
          sourcemap: true,      // enable sourcemaps
          minify: true,         // enable minification --minification increases the build time sometimes
        }),
      ],
    };
    
  6. 使用 jest.config.js 配置 jest:

    /** @type {import('ts-jest').jestconfigwithtsjest} **/
    export default {
      testenvironment: "node",
      transform: {
        "^.+.tsx?$": ["ts-jest",{}],
      },
    };
    
  7. 使用配置 nodemon nodemon.json:

    {
        "watch": ["src"],
        "ext": "ts,json",
        "ignore": ["src/**/*.spec.ts"],
        "exec": "npm start"      
      }
    
  8. 创建文件:创建一个简单的 src/index.ts 文件:

    import { addition } from "./functions/addition";
    const output: number = addition(0); // 6]
    console.log(output);
    
  9. 创建文件:创建一个简单的 src/function/addition.ts 文件:

    export function addition(...args: number[]) {
        return args.reduce((acc, val) => acc + val, 0);
      }
    
  10. 创建示例测试:创建一个简单的tests/function/addition.ts 文件:

    import { addition } from '../../src/functions/addition';
    
    describe('addition function', () => {
    
      it('should correctly sum two positive numbers', () => {
        const sum = addition(1, 2);
        expect(sum).tobe(3);
      });
    
      it('should correctly sum larger positive numbers', () => {
        const sum = addition(5, 10);
        expect(sum).tobe(15);
      });
    
      it('should return 0 when no arguments are passed', () => {
        expect(addition()).tobe(0);
      });
    
      it('should correctly sum two negative numbers', () => {
        const sum = addition(-5, -10);
        expect(sum).tobe(-15);
      });
    
      it('should correctly sum one negative and one positive number', () => {
        const sum = addition(-5, 10);
        expect(sum).tobe(5);
      });
    
      it('should handle large numbers correctly', () => {
        const sum = addition(1e6, 1e6);
        expect(sum).tobe(2e6);  // 2 million
      });
    
      it('should handle floating point numbers correctly', () => {
        const sum = addition(0.1, 0.2);
        expect(sum).tobecloseto(0.3, 5);  // 0.1 + 0.2 should be close to 0.3
      });
    });
    
  11. 。 项目结构

您的目录结构应如下所示:

app/
├── dist/
├── node_modules/
├── src/
│   ├── functions/
│       ├──addition.ts
│   ├── index.ts
├── tests/
│    ├── addition.test.ts
├── package.json
├── rollup.config.js
├── tsconfig.json
└── jest.config.js

运行应用程序

构建并运行应用程序:

  1. 构建应用程序:

    npm run build
    
  2. 运行应用程序:

    npm start
    
  3. 使用自动重新加载进行开发:

    npm run dev
    
  4. 运行测试:

    npm test
    

结论

通过此设置,您已经使用 typescript、用于捆绑的 rollup、用于测试的 jest 以及用于在开发过程中自动重新加载的 nodemon 创建了一个简单但功能强大的 node.js 应用程序。此环境可确保您的应用程序结构良好、易于测试并针对生产进行优化。

随意尝试不同的配置并根据您的需求调整设置。这只是使用 typescript 构建可扩展且可维护的 node.js 应用程序的起点!

热门AI工具

更多
讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

相关专题

更多
TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

312

2026.02.13

TypeScript全栈项目架构与接口规范设计
TypeScript全栈项目架构与接口规范设计

本专题面向全栈开发者,系统讲解基于 TypeScript 构建前后端统一技术栈的工程化实践。内容涵盖项目分层设计、接口协议规范、类型共享机制、错误码体系设计、接口自动化生成与文档维护方案。通过完整项目示例,帮助开发者构建结构清晰、类型安全、易维护的现代全栈应用架构。

540

2026.02.25

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

391

2026.03.13

TypeScript 全栈开发进阶指南
TypeScript 全栈开发进阶指南

面向有 JavaScript 基础的开发者,深入讲解 TypeScript 的类型系统与全栈开发实践。

306

2026.06.03

TypeScript Node.js 全栈工程化与Monorepo架构实践
TypeScript Node.js 全栈工程化与Monorepo架构实践

本专题围绕 TypeScript 在 Node.js 全栈开发中的工程化实践展开,系统讲解 Monorepo 架构设计、包管理策略、模块复用机制以及服务端与前端统一类型系统的构建方法。通过真实项目案例,帮助开发者提升大型全栈项目的可维护性与协作效率。

698

2026.06.16

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2255

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

3622

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

1216

2023.10.13

Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

0

2026.11.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
快速入门Node.JS全套完整版
快速入门Node.JS全套完整版

共83课时 | 13.6万人学习

nodejs开发基础教程
nodejs开发基础教程

共15课时 | 4.9万人学习

JavaScript设计模式视频教程
JavaScript设计模式视频教程

共28课时 | 6.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn