jsconfig 配置的作用
- 在某个目录放一个
jsconfig.json,VS Code 就把它当作JavaScript 项目根。文件里定义项目包含的源文件与语言服务选项,从而影响智能提示、自动导入、转到定义、错误检查等编辑器体验。(Visual Studio Code) - VS Code 没有
jsconfig也能工作,但当你的工作区里并非所有 JS 文件都属于同一个项目,或需要路径别名/包含范围等配置时,就应该创建它。(Visual Studio Code) - 它本质上是
tsconfig.json的“JS 版变体”,只作用于编辑器的 JS/JSX 语言服务(不参与打包)。(Visual Studio Code)
为什么/什么时候需要
VS Code JS 支持有两种模式:
- File Scope(无 jsconfig):每个文件独立,没有统一的项目上下文。
- Explicit Project(有 jsconfig):用
jsconfig.json明确项目边界与解析规则。 当你需要更准确的 IntelliSense、跨文件跳转、非相对导入/别名,建议使用jsconfig。(GitHub)
常用配置项(高频)
include/exclude:工程边界。只把src/等需要的目录纳入项目。(Visual Studio Code)compilerOptions.baseUrl+paths:配置路径别名(如@/),让 VS Code 能解析到定义并提供自动导入。(Visual Studio Code)checkJs:对 .js/.jsx 做 TS 级别类型检查(配合 JSDoc 与.d.ts)以发现更多类型错误。(Visual Studio Code)jsx:设置 JSX 处理方式(如 React 17+ 的react-jsx)。(Visual Studio Code)- 其他常见:
module、moduleResolution、resolveJsonModule、types等,影响编辑器如何解析模块与可见的全局类型(例如 Node/React)。(Visual Studio Code)
小技巧:用命令面板 JavaScript: Go to Project Configuration 可检查当前文件是否被某个
jsconfig.json管理。(Visual Studio Code)
与 tsconfig 的关系
- 语义上:
jsconfig.json是tsconfig.json的子集/对应物,用于纯 JS 项目;TS 项目应只维护tsconfig.json(不要两者并存,避免冲突)。(Visual Studio Code)
常见坑
- 有
jsconfig但include没覆盖源码(如漏了src/),会导致“转到定义/自动导入”异常。(Visual Studio Code) - 配了打包器 alias(如 Rsbuild/Vite/Webpack),却没在
jsconfig同步baseUrl/paths,编辑器跳转会失效(打包能过但编辑器不认)。(Visual Studio Code) - 开启
checkJs后导入*.scss、*.jpg等非 JS 资源需要.d.ts声明,不然会报“找不到模块/类型声明”。这是语言服务在做类型检查的预期行为。(Visual Studio Code)
和 Biome/ESLint/打包器的区别
| 维度 | jsconfig.json | Biome |
|---|---|---|
| 主要作用 | 配置 VS Code JavaScript 语言服务:项目边界、路径解析、类型检查选项(checkJs)等 |
格式化 + Lint 工具:风格统一、可疑代码模式、自动修复等 |
| 生效位置 | 编辑器内(tsserver),不参与打包 | CLI/编辑器/CI,检查并修复代码风格与部分问题 |
| 能否做类型检查 | 可(对 JS 通过 checkJs+JSDoc/类型声明) |
以规则式静态检查为主;不是完整的类型系统 |
| 是否影响打包 | 否 | 否(与 bundler 配置分离) |
- Biome 的定位是超快的格式化器 + Linter,替代 Prettier/ESLint 组合;它强调“格式化由 formatter 处理,lint 规则不覆盖格式化”,并提供大量分组规则与自动修复。(Biome)
- Biome 不提供像 TS 那样的完整类型推断/检查;
jsconfig的checkJs则能把 .js/.jsx 纳入类型检查(配合 JSDoc 与声明),捕获 API 误用、形状不匹配等类型问题。(Visual Studio Code) - 二者是互补关系:Biome 保证风格/常见陷阱;
jsconfig让编辑器理解你的项目结构与别名,并在需要时提供类型层面的保护。(Visual Studio Code)
给你的一份实用模板(纯 JS + React)
{
"compilerOptions": {
"baseUrl": ".",
"paths": { "@/*": ["src/*"] },
"jsx": "react-jsx",
"checkJs": true, // 若暂不想要类型错误,可设为 false
"module": "ESNext",
"moduleResolution": "bundler",
"resolveJsonModule": true,
"types": ["react", "react-dom", "node"]
},
"include": ["src"],
"exclude": ["dist", "node_modules"]
}
如果你开启了
checkJs,并且会import './x.scss'或图片等静态资源,请加一份最小的assets.d.ts(告诉编辑器这些模块的“类型”),以避免无意义报错。(Visual Studio Code)