New Watcher Dialog
for Windows and Linux
for OS X
Ctrl+Alt+S

The dialog box opens when you click the Add or Edit
button
on the File Watchers page. Use the dialog box to create a project File Watcher
based on a predefined IntelliJ IDEA File Watcher template or to edit an existing project File Watcher.
Each template contains the settings that are optimal for the selected transpiling tool. So in most cases, all you need is specify the path to the transpiler executable.
On this page:
Dialog box description
The dialog box consists of the following areas:
General
Options
In this area, configure the behaviour of the File Watcher.
Item | Description |
---|---|
Output Filters | Click this button to open the Output Filters dialog where you can manage the list of filters to distinguish the output of the File Watcher from other output. These filters make the basis for: |
Immediate file synchronization | |
Track only root files |
In the TypeScript file watcher, the check box has been renamed to Compile main files only.
When the File Watcher is invoked on a file, IntelliJ IDEA detects all the files in which this file is included. For each of these files, in its turn, IntelliJ IDEA again detects the files into which it is included. This operation is repeated recursively until IntelliJ IDEA reaches the files that are not included anywhere within the specified scope. These files are referred to as root files (do not confuse with content roots).
This choice is available only for CSS, Sass/SCSS, Less, Compass, Stylus, Typescript, and Dart. |
Show console | Use this drop-down list to define when you want the File Watcher open its dedicated console with messages. The available options are: |
Check file for syntax errors |
|
Watcher Settings
In this area, configure interaction with the transpiling tool: specify the executable file to use, the arguments to pass to it, and customize the default template settings for input and output.
Item | Description |
---|---|
File type |
Use this drop-down list to specify the expected type of input files.
The File Watcher will consider only files of this type
as subject for analyzing and processing.
File types are recognised based on associations between file types and file extensions.
By default, the field shows the file type in accordance with the chosen predefined File Watcher template. |
Scope |
Use this drop-down list to define the range of files the File Watcher can be applied to.
Changes in these files will invoke the File Watcher either immediately or upon save or frame deactivation,
depending on the status of the Immediate file synchronization check box.
You can choose one of the predefined scopes from the drop-down list:
VCS Scopes: these scopes are only available if your project is under version control.
For more details on scopes, see the pages Scopes and Scopes dialog. The Scope setting overrides the Track only root files check box setting: if a dependency is outside the specified scope, the File Watcher is not applied to it. |
Program |
In this text box, specify the location of the transpiler's executable file (.exe , .cmd , .bat ,
or other depending on the specific tool. .jar archives are also acceptable but defining PATH variables for them is not supported.)
Do one of the following:
|
Arguments |
In this text box, define the arguments to pass to the transpiler and thus influence its behaviour.
Among other cases, use this text box to change the default output location, that is,
specify a custom location where you want the transpiler to store the files generated during transpilation.
Do one of the following:
When specifying the arguments, follow these rules:
|
Working directory |
In this text box, specify the directory to which the transpiler will be applied.
Because the tool is always invoked in the context of a file, the default working directory is the directory of the current file. This setting is specified in all predefined templates
through a macros $FileDir$ . To update this default settings, do one of the following:
|
Environment variables |
Use this text box to specify a the PATH variable for a tool that is required for starting the transpiler
but is not referenced in the path to it.
|
Output paths to refresh |
In this text box, specify the files where the transpiler stores its output: the resulting source code, source maps,
and dependencies. In other words, tell IntelliJ IDEA where it should search for the files generated through transpilation.
Please note, that changing the value in this text box does not make the transpiler store its output in another location. To do that, specify the desired output location in the Arguments text box. Do one of the following:
|
Create output from stdout |
Examples of customizing the behaviour of a transpiler
Any transpiler is an external, third-party tool. Therefore the only way to influence a transpiler is pass arguments to it just as if you were working in the command line mode. These arguments are specific for each tool. Below are two examples of customizing the default output location for the CoffeeScript transpiler.
Suppose, you have a project with the following folder structure:
js
folder.
Moreover, you can have them stored in a flat list or arranged in the folder structure that repeats the original structure under the app
node.
-
To have all the generated files stored in the output
js
folder without retaining the original folder structure under theapp
folder:-
In the Arguments text box, type:
--output $ProjectFileDir$\js\ --compile --map $FileName$
-
In the Output paths to refresh text box, type:
$ProjectFileDir$\js\$FileNameWithoutExtension$.js:$ProjectFileDir$\js\$FileNameWithoutExtension$.map
As a result, the project tree looks as follows:
-
In the Arguments text box, type:
-
To have the original folder structure under the
app
node retained in the outputjs
folder:-
In the Arguments text box, type:
--output $ProjectFileDir$\js\$FileDirRelativeToProjectRoot$\ --compile --map $FileName$
-
In the Output paths to refresh text box, type:
$ProjectFileDir$\js\$FileDirRelativeToProjectRoot$\$FileNameWithoutExtension$.js:$ProjectFileDir$\js\$FileDirRelativeToProjectRoot$\$FileNameWithoutExtension$.map
As a result, the project tree looks as follows:
-
In the Arguments text box, type: