首页 > 其他分享 >tsconfig.build.json 和 tsconfig.json 的区别是什么,为啥分为两个?

tsconfig.build.json 和 tsconfig.json 的区别是什么,为啥分为两个?

时间:2024-04-05 17:14:02浏览次数:14  
标签:配置文件 编译 json 构建 build tsconfig

tsconfig.jsontsconfig.build.json 都是 TypeScript 编译器的配置文件,它们用于定义 TypeScript 项目的编译选项和规则。虽然它们的核心功能相同,但通常情况下,项目中会有多个 tsconfig 文件,如 tsconfig.build.json,以满足不同编译场景的需求。下面是它们之间的一些关键区别:

  1. 目的与用途:

    • tsconfig.json: 这是默认的 TypeScript 配置文件,用于项目的常规开发和调试。它通常包含了适用于大部分开发阶段的编译选项,如编译目标(target)、模块系统(module)、源文件路径(include/exclude)等。开发人员在日常工作中直接使用此配置进行类型检查、代码补全、错误提示等。

    • tsconfig.build.json: 这是一个特定于构建过程的配置文件,通常用于项目的生产构建或打包。它可能包含了一些仅在构建阶段才需要的编译选项或更严格的编译规则,以确保生成的 JavaScript 代码在生产环境中具备最佳性能、最小体积或特定的兼容性要求。例如,可能会启用更激进的压缩选项、移除未使用的代码(tree-shaking)或者设置特定的编译目标(如 ES5 以兼容旧版浏览器)。

  2. 继承与覆盖:

    • tsconfig.json: 作为主配置文件,它可能被其他特定用途的 tsconfig 文件(如 tsconfig.build.json)通过 extends 关键字继承。这意味着子配置文件可以从 tsconfig.json 中继承基础配置,并在其基础上添加、修改或覆盖特定选项。

    • tsconfig.build.json: 通常会通过 extends 关键字继承自 tsconfig.json,以减少重复配置,并专注于与构建相关的特定差异。例如:

      {
        "extends": "./tsconfig.json",
        "compilerOptions": {
          "target": "es5", // 更广泛的浏览器兼容性
          "module": "esnext", // 用于现代打包工具的模块格式
          "declaration": true, // 生成类型声明文件(.d.ts)
          "sourceMap": false, // 生产环境下可能不需要源码映射
          // 其他构建相关的选项...
        },
        "exclude": ["**/*.spec.ts"], // 在构建时排除测试文件
        // 其他构建相关的规则...
      }
      
  3. 执行与管理:

    • tsconfig.json: 通常与开发流程紧密关联,IDE(如 Visual Studio Code)会自动检测并使用此文件来进行类型检查和代码提示。开发人员在运行 tsc 命令时如果不指定特定配置文件,编译器也会默认使用 tsconfig.json

    • tsconfig.build.json: 通常在构建脚本(如 npm run buildgulpwebpack 等构建工具的任务)中显式指定。这些脚本会调用 tsc 命令并传入 tsconfig.build.json 文件路径,以确保使用构建专用的配置进行编译。

总结来说,tsconfig.jsontsconfig.build.json 分开的主要原因是为了解耦开发环境与构建环境的编译配置,允许针对不同场景设置最适合的编译选项和规则。
这样既能保证开发阶段的便捷性和灵活性,又能确保生产环境下的代码质量和性能要求。通过合理的继承和覆盖机制,可以避免重复配置,保持配置文件的组织结构清晰。

标签:配置文件,编译,json,构建,build,tsconfig
From: https://www.cnblogs.com/longmo666/p/18115912

相关文章

  • ProcessBuilder
    ProcessBuilder当我们直接使用以下命令行时,会报错CreateProcesserror=2,系统找不到指定的文件ProcessBuilderpb=newProcessBuilder("mvn-version");乍一看,以为是mvn没在环境变量中,在cmd中执行了一把没问题。原因:在代码中执行java命令时,依赖当前主应用的运行环境和进......
  • Quasar framework build if not a root path
    build:{target:{browser:['es2019','edge88','firefox78','chrome87','safari13.1'],node:'node16'},vueRouterMode:'hash',//availablevalues:......
  • Java -fastjson api
    构造json对象需求:构造以下请求体{"attrSelectionVO":[{"attrAccessId":"eea99a0894504a2b89f3cfeb4be051d3","attrValueList":[{"attrValue":"输送型","att......
  • docker 配置文件 deamon.json
    {"allow-nondistributable-artifacts":[],"api-cors-header":"","authorization-plugins":[],"bip":"","bridge":"","builder":{"gc":{&......
  • python 解析json字符串保存到对象中
    在Python中,你可以使用内置的json模块来解析JSON字符串并保存到对象中。以下是一个简单的示例:pythonimportjson#假设你有以下的JSON字符串json_string='{"name":"Alice","age":25,"city":"NewYork"}'#使用json模块的loads方法将JSON字符串解析为Python对象(在这种情况下......
  • 如何根据JSON文件内容生成自定义对象
    在Python中,你可以使用json模块来解析JSON文件,并将解析后的数据映射到自定义的Python对象上。这通常涉及到定义一个类,并为该类实现一个__init__方法来初始化对象的属性。然后,你可以编写一个函数来读取JSON文件,将解析后的数据传递给类的构造函数,从而创建自定义对象。下面是一个简单......
  • Python中处理JSON字段时,和如何将Python对象转换为JSON字符串
    在Python中处理JSON字段时,通常使用内置的json模块。这个模块允许你将Python对象转换为JSON字符串,以及将JSON字符串解析为Python对象。以下是一些常见的JSON字段处理操作:1.将Python对象转换为JSON字符串python复制importjson#定义一个Python字典data={  "name"......
  • 使用NodeJS将数据保存成JSON文件
    使用NodeJS将数据保存成JSON文件 在平时我需要把后端一些object变量保存至本地,可以这样做:constexpress=require("express");constapp=express();constserver=require("http").createServer(app);constfs=require('fs');app.use(express.static("publ......
  • Jmeter使用json提取器进行模糊提取的方法
    根据JsonPath的官方文档:GitHub-json-path/JsonPath:JavaJsonPathimplementation即下图:若需要对既有的json内容进行模糊匹配,需要使用以上多种方式,但是更建议使用正则匹配的方式。 $..results[?(@.name=~/.*CICD/i)].name表示对results中的name值为CICD结尾的内容进行......
  • json字符串重复转义问题
    若后台返回的是一个json字符串格式的值,我们首先做的是先用JSON.parse()转化成json数组,然后再通过点的方式取到里面的值但是在实际使用过程中,会发现有重复转义的问题,第一次操作正常,第二次点击其他按钮后,json字符串前就多了一个\,所以在进行parse之前,要先用replace()去除\ 一、使......