什么是jsconfig.json?
"compilerOptions": {
"target": "esnext",
"checkJs": false,
"strict": true,
"allowSyntheticDefaultImports": true,
"baseUrl": ".",
"module": "commonjs",
"paths": {
"@/*": ["./src/*"],
"@components/*": ["src/components/*"],
"@views/*": ["src/views/*"]
}
},
"exclude": ["node_modules", "dist", "temp"],
"include": ["src/**/*", "types/**/*"]
}
如果你的项目中有一个 jsconfig.json文件的话,这个文件的配置可以对你的文件所在目录下的所有js代码做出个性化支持。
jsconfig.json的配置是tsconfig.json的子集;
jsconfig.json源于tsconfig.json,是TypeScript的配置文件。jsconfig.json相当于tsconfig.json的“allowJs”属性设置为true
为什么我需要一个jsconfig.json文件?
Visual Studio Code的JavaScript支持可以在两种不同的模式下运行:
- 文件范围 - 没有jsconfig.json:在此模式下,在Visual Studio Code中打开的JavaScript文件被视为独立单元。 只要文件a.js没有显式引用文件b.ts(使用///引用指令或CommonJS模块),两个文件之间就没有共同的项目上下文。
- 显式项目 - 使用jsconfig.json:JavaScript项目是通过jsconfig.json文件定义的。 目录中存在此类文件表示该目录是JavaScript项目的根目录。 文件本身可以选择列出属于项目的文件,要从项目中排除的文件,以及编译器选项(见下文)。
当您在工作空间中有一个定义项目上下文的jsconfig.json文件时,JavaScript体验会得到改进。 因此,当您在新工作空间中打开JavaScript文件时,我们提供了一个创建jsconfig.json文件的提示
jsconfig.json的位置
我们通过创建jsconfig.json文件将我们代码的这一部分(我们网站的客户端)定义为JavaScript项目。 将文件放在JavaScript代码的根目录下,如下所示
在更复杂的项目中,您可能在工作空间中定义了多个jsconfig.json文件。 您将需要执行此操作,以便不将一个项目中的代码建议为IntelliSense以在另一个项目中进行编码。 下面的插图是一个带有客户端和服务器文件夹的项目,显示了两个单独的JavaScript项目
jsconfig选项
下面是jsconfig“compilerOptions”来配置JavaScript语言支持。
提示:不要被compilerOptions混淆。 此属性的存在是因为jsconfig.json是tsconfig.json的后代,后者用于编译TypeScript。
。string-
选项描述noLib
不包括默认库文件 lib.d.tstarget
指定要使用的默认库 lib.d.ts,可选 es3 / es5 / es6 / es2015 / es2016 / es2017 / es2018 / es2019 / es2020 / esnextmodule
指定模块系统(生成模块代码时),可选 amd / commonJS / es2015 / es6 / esnext / none / system / umdmoduleResolution
指定如何解析模块以进行导入,可选 node / classiccheckJs
对 JavaScript 文件启用类型检查experimentalDecorators
为ES装饰器
提案提供实验支持allowSyntheticDefaultImports
允许从模块进行默认导入而没有默认导出。这不影响代码生成,仅影响类型检查baseUrl
基本目录,用于解析非相对模块名称paths
指定要相对于 baseUrl 选项计算的路径映射
选项 | 描述 | 类型 | 默认 |
---|---|---|---|
noLib | 默认不包含默认库文件(lib.d.ts) | string | - |
target | 指定要使用的默认库(lib.d.ts)。 值是“es3”,“es5”,“es6”,“es2015”,“es2016”,“es2017”,“es2018”,“esnext”。 | string | - |
checkJs | 启用JavaScript文件的类型检查 | boolean | true |
experimentalDecorators | 为拟议的ES装饰器提供实验支持 | string | - |
allowSyntheticDefaultImports | 允许从没有默认导出的模块进行默认导入。 这不会影响代码发出,只会影响类型检查。 | boolean | true |
baseUrl | 用于解析非相对模块名指定相对于baseUrl选项计算的路径映射称的基目录 | string | - |
paths | 指定相对于baseUrl选项计算的路径映射 | string | - |
experimentalDecorators | 为拟议的ES装饰器提供实验支持 | string | - |
使用webpack别名
要使IntelliSense使用webpack别名,您需要使用[glob模式]指定paths键。
例如,对于别名'ClientApp'(或@):
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"ClientApp/*": ["./ClientApp/*"]
}
}
}
然后使用别名
import Something from 'ClientApp/foo'
// 或 import Something from '@/foo'
最佳实践
只要有可能,您应该使用不属于项目源代码的JavaScript文件排除文件夹。
提示:如果工作空间中没有jsconfig.json,则默认情况下,VS Code将排除node_modules文件夹。
下面是一个将常见项目组件映射到其安装文件夹的表,建议将其排除在外:
组件 | 要排除的文件夹 |
---|---|
node | 排除node_modules文件夹 |
webpack, webpack-dev-server | 排除内容文件夹,例如dist。 |
bower | 排除bower_components文件夹 |
ember | 排除tmp和temp文件夹 |
jspm | 排除jspm_packages文件夹 |
当您的JavaScript项目变得太大而性能变慢时,通常是因为像node_modules这样的库文件夹。 如果VS Code检测到您的项目变得过大,则会提示您编辑排除列表
只要有可能,您应该使用不属于项目源代码的JavaScript文件排除文件夹。
提示:如果工作空间中没有jsconfig.json,则默认情况下,VS Code将排除node_modules文件夹。
下面是一个将常见项目组件映射到其安装文件夹的表,建议将其排除在外:
组件 | 要排除的文件夹 |
---|---|
node | 排除node_modules文件夹 |
webpack, webpack-dev-server | 排除内容文件夹,例如dist。 |
bower | 排除bower_components文件夹 |
ember | 排除tmp和temp文件夹 |
jspm | 排除jspm_packages文件夹 |
当您的JavaScript项目变得太大而性能变慢时,通常是因为像node_modules这样的库文件夹。 如果VS Code检测到您的项目变得过大,则会提示您编辑排除列表