Article image Configuring tsconfig: Include and Exclude Options

28.8. Configuring tsconfig: Include and Exclude Options

Page 51 | Listen in audio

When working with TypeScript, one of the first things you will encounter is the tsconfig.json file. This configuration file is crucial as it tells the TypeScript compiler how to compile your TypeScript code. Among the many options available in tsconfig.json, the include and exclude options are particularly important for specifying which files should be part of the compilation process.

The include and exclude options allow you to define a set of file patterns that TypeScript should or should not consider during compilation. Understanding how these options work can help you manage your project files more effectively and ensure that only the necessary files are compiled, thus improving the performance and manageability of your TypeScript projects.

Understanding the include Option

The include option in tsconfig.json specifies an array of file patterns that should be included in the compilation process. By default, if no include option is specified, TypeScript will include all files in the directory and its subdirectories, except for those in the node_modules folder.

Here's an example of how you might use the include option:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs"
  },
  "include": [
    "src/**/*"
  ]
}

In this example, the TypeScript compiler will include all files within the src directory and its subdirectories. The **/* pattern is a glob pattern that matches any file in any subdirectory.

Understanding the exclude Option

The exclude option allows you to specify an array of file patterns that should be excluded from the compilation process. Like the include option, it uses glob patterns to specify the files and directories to exclude.

By default, TypeScript excludes the node_modules directory, but you can specify additional patterns to exclude other files or directories. Here's an example:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs"
  },
  "exclude": [
    "node_modules",
    "dist",
    "test/**/*"
  ]
}

In this example, the TypeScript compiler will exclude the node_modules, dist, and any files within the test directory and its subdirectories from the compilation process.

Combining include and exclude Options

In many cases, you'll want to use both the include and exclude options together to fine-tune which files are part of your TypeScript project. When both options are specified, TypeScript will first apply the include patterns and then exclude any files that match the exclude patterns.

Here's an example configuration that uses both options:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs"
  },
  "include": [
    "src/**/*",
    "lib/**/*"
  ],
  "exclude": [
    "node_modules",
    "src/legacy/**/*"
  ]
}

In this configuration, TypeScript will include all files in the src and lib directories, but will exclude any files in the node_modules directory and any files in the src/legacy directory.

Using Glob Patterns

Both the include and exclude options use glob patterns to specify which files to include or exclude. Glob patterns are a powerful way to specify file paths using wildcard characters.

  • * - Matches zero or more characters in a file or directory name.
  • ? - Matches exactly one character in a file or directory name.
  • ** - Matches any number of directories or subdirectories.

For example, the pattern src/**/*.ts matches all TypeScript files in the src directory and its subdirectories.

Practical Use Cases

Understanding how to use the include and exclude options effectively can help you manage your TypeScript projects more efficiently. Here are some practical use cases:

Managing Large Codebases

In large projects, you may have multiple directories for different parts of your application, such as src for source code, lib for library code, and test for test code. You can use the include and exclude options to specify exactly which directories should be part of the compilation process.

Excluding Generated Files

If your project includes generated files, such as those produced by a build process or a code generator, you may want to exclude these files from the TypeScript compilation. This can help prevent issues with duplicate declarations or unnecessary compilation of files that are not part of your source code.

Working with Legacy Code

If you are migrating a JavaScript project to TypeScript, you may have legacy code that you want to exclude from the TypeScript compilation until it has been fully converted. You can use the exclude option to temporarily exclude these files from the compilation process.

Best Practices

When configuring the include and exclude options, consider the following best practices:

  • Be specific with your patterns. Avoid using overly broad patterns that may include unnecessary files.
  • Regularly review your tsconfig.json file to ensure that the include and exclude options are up-to-date with your project's structure.
  • Use comments in your tsconfig.json file to document why certain files or directories are included or excluded.

By carefully configuring the include and exclude options, you can ensure that your TypeScript project is compiled efficiently and that only the necessary files are included in the compilation process. This can lead to faster build times, reduced complexity, and a more organized project structure.

In conclusion, mastering the include and exclude options in tsconfig.json is a valuable skill for any TypeScript developer. By understanding how these options work and how to use them effectively, you can take full control of your TypeScript compilation process and optimize your project's performance and maintainability.

Now answer the exercise about the content:

What is the purpose of the "include" and "exclude" options in the tsconfig.json file when working with TypeScript?

You are right! Congratulations, now go to the next page

You missed! Try again.

Article image Configuring tsconfig: Configuring RootDir and OutDir

Next page of the Free Ebook:

52Configuring tsconfig: Configuring RootDir and OutDir

7 minutes

Earn your Certificate for this Course for Free! by downloading the Cursa app and reading the ebook there. Available on Google Play or App Store!

Get it on Google Play Get it on App Store

+ 6.5 million
students

Free and Valid
Certificate with QR Code

48 thousand free
exercises

4.8/5 rating in
app stores

Free courses in
video, audio and text