vscode中的 jsconfig.json

什么是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 然后重启项目才能生效【输入别名路径也有提示】。

参考文档:https://www.jianshu.com/p/b0ec870ddfdf

你可能感兴趣的:(vscode中的 jsconfig.json)