Learn TypeScript
Compiling specific files
Compiling specific files
In this lesson, we will learn how to define what files should be compiled in the TypeScript compilation process.
Technical requirements
You will need the following installed on your computer for this lesson:
Node.js and npm. You can download these from https://nodejs.org/en/download. If you already have these installed, make sure that Node.js is at least version 8.2, and that npm is at least version 5.
Code editor such as Visual Studio Code. This can be installed from https://code.visualstudio.com.
The starter project which can be found here.
After the starter project has been downloaded. Open it in a code editor and execute the following command in a Terminal window:
npm install
This will install the project dependency, which is TypeScript.
Specifying files by name
The default behavior of the TypeScript compiler is to compile all the TypeScript files that exist in a project.
A way of being specific about what files to compile is to use the "files"
option in tsconfig.json
.
- Add the following to the
tsconfig.json
file:
{ "compilerOptions": { ... }, "files": [ "src/shared/utils.ts" ]}
- Invoke the TypeScript compiler by running the following command, in the Terminal window:
npm run tsc
What file has been compiled?
This is nice, but listing every file will quickly become difficult to maintain.
- Remove the
"files"
option intsconfig.json
and thedist
folder before continuing.
Specifying folders
A better option for specifying what files to compile is to use the "include"
option in tsconfig.json
.
- Add the following to the
tsconfig.json
file:
{ "compilerOptions": { ... }, "include": ["src/**/*"]}
The include
option takes a list of glob-like file patterns. The supported glob wildcards are:
- * matches zero or more characters (excluding directory separators)
? matches any one character (excluding directory separators)
**/ recursively matches any subdirectory
Invoke the TypeScript compiler:
npm run tsc
Both TypeScript files have been compiled. The transpiled JavaScript files have been placed in the dist
directory.
- Remove the
dist
folder before continuing.
Specifying folders to exclude
Folders can also be excluded from the compilation process using an "exclude"
option in tsconfig.json
.
This is useful for ensuring the node_modules
folder is ignored, and test files are ignored:
{ ... "exclude": [ "node_modules", "**/*.spec.ts" ]}
Compiling JavaScript files
The TypeScript compiler can compile JavaScript files if we set the allowJs
option to true
. This is useful when migrating a project to TypeScript, and you have a mix of JavaScript and TypeScript files.
- Add the
allowJs
flag totsconfig.json
withinclude
still specifying all files in thesrc
directory:
{ "compilerOptions": { ... "allowJs": true, }, "include": ["src/**/*"]}
- Invoke the TypeScript compiler:
npm run tsc
Notice that the utilsv1.js
file has now been included in the dist\shared
folder.
Neat!
Summary
The include
option is a flexible way of specifying what files to compile. The exclude
option can be used to exclude test code and code in the node_modules
folder from the compilation process. allowJs
is a useful option when migrating a JavaScript project to TypeScript.
In the next lesson, we will learn how to control the transpilation process further.