什么是jsconfig.json?
目录中存在jsconfig.json文件表示该目录是JavaScript项目的根目录。jsconfig.json文件指定根文件和JavaScript语言服务提供的功能选项。
提示:如果您不使用JavaScript,则无需担心jsconfig.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项目。
使用webpack别名
要使IntelliSense使用webpack别名,您需要使用glob模式指定paths键。
例如,对于别名'ClientApp'(或@):
const path = require('path');
module.exports = {
// 生产环境关闭 source map
productionSourceMap: false,
chainWebpack: config => {
// 配置别名
config.resolve.alias
.set('@', path.resolve(__dirname, 'src'))
.set('@assets', path.resolve(__dirname, 'src/assets'))
.set('@components', path.resolve(__dirname, 'src/components'))
.set('@page', path.resolve(__dirname, 'src/page')) // 这里只是举例,实际不用配这个
},
}
然后使用别名
import scroll from '@/shared/utils';
// 或 import Something from '@/foo'
说明:如果没有配置 jsconfig.json 我们使用别名时,路径没有提示,配置之后你会发现使用别名也有提示了。
项目示例:
{
"compilerOptions": {
"baseUrl": "./",
"paths": {
"@/*": ["src/*"],
"@assets/*": ["src/assets/*"],
"@components/*": ["src/components/*"],
"@page/*": ["src/page/*"],
}
},
"exclude": ["node_modules", "dist"]
}
特别说明:
配置好
jsconfig.json
要关闭 vscode 然后重启项目才能生效【输入别名路径也有提示】。