vscode vue3 jsconfig 与 tsconfig的区别

news/2025/3/21 17:14:07/

1、基本说明

‌jsconfig.json和tsconfig.js的主要区别在于它们的应用场景和功能。

应用场景

  • jsconfig.json‌:主要用于JavaScript项目,特别是那些需要JavaScript语言服务支持的项目。它相当于tsconfig.json的“allowJs”属性设置为true,即允许JavaScript文件被TypeScript编译器处理‌。
  • tsconfig.json‌:专门用于TypeScript项目,用于指定编译TypeScript代码时的编译选项和编译目标等信息。通过修改该文件,可以定制TypeScript编译器的行为,例如指定编译目标、启用或禁用特定的语言特性、设置代码检查规则等‌。

功能差异

  • jsconfig.json‌:主要用于指定项目的根文件和JavaScript语言服务提供的功能选项。它可以帮助VSCode更好地处理项目,提供智能提示等功能。虽然jsconfig.json源于tsconfig.json,但默认启用了与JavaScript相关的编译器标志,适用于纯JavaScript项目‌23。
  • tsconfig.json‌:包含更详细的编译选项,用于控制TypeScript编译器的行为。它可以设置编译目标、模块系统、是否启用严格模式等,适用于TypeScript项目‌13。

配置方式

  • jsconfig.json‌:可以通过VSCode等编辑器自动生成,也可以通过手动添加配置选项来实现。它主要用于提高开发体验,如路径智能提示等‌12。
  • tsconfig.json‌:通常通过命令行工具如tsc --init自动生成,也可以手动添加配置选项。它用于控制TypeScript编译的具体行为和选项‌

2、基本配制

1. 配置 jsconfig.json

对于 JavaScript 项目,jsconfig.json 提供了一种方式来定义项目的结构和特定的编译选项。以下是一个基本的 jsconfig.json 配置示例

{"compilerOptions": {"target": "es5",                       // 指定 ECMAScript 目标版本"module": "esnext",                 // 指定生成代码的模块系统"checkJs": true,                      // 允许在 js 文件中报告错误"allowJs": true,                      // 允许编译 js 文件"baseUrl": "./",                      // 指定非相对模块名的解析基地址"paths": {                            // 路径映射,例如将特定导入重写为本地文件"*": ["types/*"]}},"include": [                            // 要包含的文件或目录"src/**/*"],"exclude": [                            // 要排除的文件或目录"node_modules","dist"]
}

2. 配置 tsconfig.json

对于 TypeScript 项目,tsconfig.json 文件是核心配置文件,它允许你指定编译选项和项目的结构。以下是一个基本的 tsconfig.json 配置示例

{"compilerOptions": {"target": "es5",                       // 指定 ECMAScript 目标版本"module": "esnext",                 // 指定生成代码的模块系统"strict": true,                       // 启用所有严格类型检查选项"esModuleInterop": true,              // 允许导入非 ES 模块"skipLibCheck": true,                 // 跳过声明文件的类型检查"forceConsistentCasingInFileNames": true, // 禁止对同一个文件的不一致的引用"baseUrl": "./",                      // 指定非相对模块名的解析基地址"paths": {                            // 路径映射,例如将特定导入重写为本地文件"*": ["types/*"]},"outDir": "./dist",                   // 指定输出目录结构"rootDir": "./src",                   // 用来控制输出目录结构的根文件夹"allowJs": true,                      // 允许编译 js 文件(即使它是 tsconfig.json)"checkJs": true,                      // 报告 js 文件中的错误},"include": [                            // 要包含的文件或目录"src/**/*"],"exclude": [                            // 要排除的文件或目录"node_modules","**/*.spec.ts"]
}

3、相关说明

  • 目标版本 (target): 根据你的运行环境选择合适的 ECMAScript 版本(如 es5es6 等)。

  • 模块系统 (module): 根据你的项目需要选择合适的模块系统(如 commonjses6esnext 等)。

  • 严格模式 (strict): 启用后,TypeScript 会启用所有严格类型检查的选项。这对于保证代码质量非常有帮助。

  • 输出目录 (outDir): 指定编译后的文件输出目录。

  • 包含与排除 (includeexclude): 控制哪些文件和目录应该被包含或排除在编译过程中。通常,你会包括源代码目录,并排除如 node_modules 和测试文件等。

  • 路径映射 (paths): 在大型项目中,你可能需要将某些导入重定向到特定的本地文件或目录。这可以通过路径映射来实现。

  • 检查 JavaScript 文件 (checkJs): 对于 JavaScript 项目,即使使用了 TypeScript,你也可以开启这个选项来检查 JavaScript 文件中的错误。

  • 允许 JavaScript 文件 (allowJs): 在 TypeScript 项目中,允许 TypeScript 编译器处理 JavaScript 文件。

3、最新生成的demo中的配制

tsconfig.json

{"files": [],"references": [{"path": "./tsconfig.node.json"},{"path": "./tsconfig.app.json"},{"path": "./tsconfig.vitest.json"}]
}

references:代表引用了下面的三个json文件,也就是说包含这三个。

tsconfig.app.json

{"extends": "@vue/tsconfig/tsconfig.dom.json","include": ["env.d.ts", "src/**/*", "src/**/*.vue"],"exclude": ["src/**/__tests__/*"],"compilerOptions": {"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo","paths": {"@/*": ["./src/*"]}}
}

include说明:

加了编译项,然后我们如果出现了鼠标移上去Unknown的提示,比如说el-button,我们加了

"compilerOptions": {"types": ["element-plus/global"]}

发现并没有什么用,这样的话,我们就要在include里加上这一个引用就可以了。

tsconfig.node.json

{"extends": "@tsconfig/node22/tsconfig.json","include": ["vite.config.*","vitest.config.*","cypress.config.*","nightwatch.conf.*","playwright.config.*","eslint.config.*"],"compilerOptions": {"noEmit": true,"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo","module": "ESNext","moduleResolution": "Bundler","types": ["node"]}
}

说明:

继承了node22/tsconfig.json的配制,包含了vite的配制,还有端到端测试的配制等等。

tsconfig.vitest.json

{"extends": "./tsconfig.app.json","include": ["src/**/__tests__/*", "env.d.ts"],"exclude": [],"compilerOptions": {"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.vitest.tsbuildinfo","lib": [],"types": ["node", "jsdom"]}
}

说明:

extends:继承tsconfig.app.json的配置项,避免重复配置。


http://www.ppmy.cn/news/1580602.html

相关文章

【免费】2000-2019年各省地方财政国内增值税数据

2000-2019年各省地方财政国内增值税数据 1、时间:2000-2019年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区、年份、地方财政国内增值税 4、范围:31省 5、指标说明:地方财政中的国内增值税是指在Z国…

蓝桥杯真题——洛谷Day13 找规律(修建灌木)、字符串(乘法表)、队列(球票)

目录 找规律 P8781 [蓝桥杯 2022 省 B] 修剪灌木 字符串 P8723 [蓝桥杯 2020 省 AB3] 乘法表 队列 P8641 [蓝桥杯 2016 国 C] 赢球票 找规律 P8781 [蓝桥杯 2022 省 B] 修剪灌木 思路:对某个特定的点来说有向前和向后的情况,即有向前再返回到该位置…

碰一碰发视频后端源码技术,支持OEM

引言 在移动互联网时代,便捷的分享体验成为众多应用追求的目标。碰一碰发视频功能为用户提供了一种新奇且高效的视频分享方式。这种功能背后的后端开发涉及到多种技术的协同工作,以确保分享过程的稳定、安全与高效。本文将深入探讨碰一碰发视频后端源码…

DeepSeek大模型在政务服务领域的应用

DeepSeek大模型作为国产人工智能技术的代表,近年来在政务服务领域的应用呈现多点开花的态势。通过多地实践,该技术不仅显著提升了政务服务的效率与智能化水平,还推动了政府治理模式的创新。以下从技术应用场景、典型案例及发展趋势三个维度进…

DeepSeek:AI 搜索引擎的革新者?

DeepSeek:AI 搜索引擎的革新者? 在人工智能技术飞速发展的当下,信息检索的方式也在悄然改变。DeepSeek 作为一款新兴的 AI 搜索引擎,试图革新传统搜索体验,以更智能、精准的方式帮助用户获取信息。那么,它究…

华为IPD六个阶段细分:研发效率提升的6个关键步骤

如何在结构化流程中实现研发效能的飞跃? 华为凭借IPD(集成产品开发)体系,在全球化竞争中持续打造爆款产品,其核心在于将市场需求、技术开发与资源管理高度融合。本文深入解析IPD的六个阶段,并结合跨行业实…

acwing1233.全球变暖

算法&#xff1a;Flood Fill bfs / dfs 统计被完全淹没的岛屿 两种方法&#xff1a; 1. 使用 total 和 bound 记录岛屿格子的数量和被淹没的格子数量&#xff0c;如果 bound total&#xff0c;说明这个岛屿被完全淹没了。 #include <iostream> #include <cstri…

【合新通信】---射频光模块

射频光模块&#xff08;RF Optical Module&#xff09;是一种将射频信号与光信号相互转换的设备&#xff0c;广泛应用于无线通信、雷达、卫星通信、光纤通信等领域。以下是关于射频光模块的详细介绍&#xff1a; 一、射频光模块的基本概念 定义&#xff1a; 射频光模块是一种将…