什么是jsconfig.json?目录中存在#jsconfig.json文件表示该目录是JavaScript项目的根目录。jsconfig.json文件为JavaScript语言服务提供的功能指定根文件和选项。提示:如果您不使用JavaScript,则无需担心jsconfig.json。提示:jsconfig.json是tsconfig.json的后代,后者是TypeScript的配置文件。jsconfig.json是tsconfig.json,“allowJs”属性设置为true。为什么我需要一个jsconfig.json文件?#VisualStudioCode的JavaScript支持可以以两种不同的模式运行:文件范围-无jsconfig.json:在此模式下,在VisualStudioCode中打开的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项目。Example#默认情况下,JavaScript语言服务将对JavaScript项目中的所有文件进行分析并提供IntelliSense。您需要指定要排除或包括哪些文件以提供正确的IntelliSense。使用“排除”属性#排除属性(全局模式)告诉语言服务哪些文件不属于您的源代码。这使性能保持在高水平。如果IntelliSense速度很慢,请将文件夹添加到排除列表(如果检测到速度变慢,VSCode会提示你这样做)。{"compilerOptions":{"module":"commonjs","target":"es6"},"exclude":["node_modules"]}提示:您需要排除构建过程生成的文件(例如dist目录)。这些文件会导致建议显示两次并降低IntelliSense。使用“include”属性#或者,您可以使用include属性(全局模式)显式设置项目中的文件。如果不包含include属性,则默认包含包含目录和子目录中的所有文件。当指定包含属性时,仅包含那些文件。这是一个带有显式include属性的示例。{"compilerOptions":{"module":"commonjs","target":"es6"},"include":["src/**/*"]}提示:exclude和include中的文件路径是相对于jsconfig的.json.jsconfigoptions#below是jsconfig"compilerOptions"配置JavaScript语言支持。提示:不要被compilerOptions混淆,因为JavaScript不需要实际编译。存在此属性是因为jsconfig.json是tsconfig.json的后代,后者用于编译TypeScript。选项说明noLib不包含默认库文件(lib.d.ts)target指定要使用的默认库(lib.d.ts)。值为“es3”、“es5”、“es6”、“es2015”、“es2016”、“es2017”、“es2018”、“es2019”、“es2020”、“esnext”。module指定生成模块代码时的模块系统。值为“amd”、“commonJS”、“es2015”、“es6”、“esnext”、“none”、“system”、“umd”。moduleResolution指定如何解析导入的模块。值是“节点”和“经典”。checkJs启用对JavaScript文件的类型检查。experimentalDecorators启用对提议的ES装饰器的实验支持。allowSyntheticDefaultImports允许从没有默认导出的模块中进行默认导入。这不会影响代码发布,只会影响类型检查。baseUrl解析不相关模块名称的基目录。paths指定相对于baseUrl选项计算的路径映射。您可以在TypeScriptcompilerOptions文档中阅读有关可用的compilerOptions的更多信息。使用webpack别名#InordertoIntelliSensetousewebpackaliases,youneedthepathskeytobespecifiedusingaglobpattern.例如,对于别名"ClientApp":{"compilerOptions":{"baseUrl":".","paths":{"ClientApp/*":["./ClientApp/*"]}}}然后使用别名从'ClientApp/foo'导入Something;最佳实践#只要有可能,您应该排除包含不属于项目源代码一部分的JavaScript文件的文件夹。提示:如果您的工作区中没有jsconfig.json,VSCode默认会排除node_modules文件夹。下表将常用的项目组件映射到建议的要排除的安装文件夹:parts文件夹要排除node排除node_modules文件夹webpack,webpack-dev-server排除内容文件夹,例如dist.bower排除bower_components文件夹ember排除tmp和temp文件夹jspm排除jspm_packages文件夹当你的JavaScript项目变得太大而性能下降时,通常是因为node_modules。如果VSCode检测到您的项目变得太大,它会提示您编辑排除列表。vscode文档中的文章
