New Watcher Dialog
for macOS
Ctrl+Alt+S
The dialog 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 tool. So in most cases, all you need is specify the path to the tool's executable.
Name
In the Name text box, type the name of the File Watcher. By default, IntelliJ IDEA suggests the name of the selected predefined template.
Files to watch
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 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 Auto-save edited files to trigger the watcher checkbox. Choose one of the predefined scopes from the drop-down list or click and configure a custom scope in the Scopes dialog that opens. See Scope for details. |
Track only root files | A root file is a file that is not included (e.g. via import ) in any other file within the specified scope.
Example
This option is available only for Babel, Closure Compiler, Compass, Jade, Less, Sass/SCSS, Stylus, UglifyJS, and YUI Compressor JS. |
Tool to run on changes
In this area, configure interaction with the tool: specify the executable file to use, the arguments to pass to it, and customize the default template settings for input and output.
Program | In this text box, specify the path to the tool's executable file (.exe , .cmd , .bat , or other depending on the specific tool.) The path can be absolute or relative. To use a |
Arguments | In this text box, define the arguments to pass to the tool and thus influence its behaviour. Arguments are usually specified using macros, for example, $FileName$ or $FileNameWithoutExtension$ , that will be replaced with actual file names.Suppose, an action affects several files watched by the same File Watcher. As a result, the File Watcher wakes up on each changed file. However, running several tasks is redundant because the File Watcher processes all the watched files during the first run. To tell IntelliJ IDEA that running File Watcher just once in enough, even if several files have been changed, make sure there is no file-specific macro, such as $FileNameWithoutExtension$ , in the Arguments field. When specifying the arguments, follow these rules:
|
Output paths to refresh | In this text box, tell IntelliJ IDEA where it should search for the tool's output: the resulting source code, source maps, dependencies, or the file itself. The location of the output is tool-specific. Please note, that changing the value in the Output paths to refresh text box does not make the tool store its output in another place. If you still need to do that, specify the desired custom output location in the Arguments text box: type the output paths with colons as separators and use macros. |
Working Directory and Environment Variables
Working directory | In this text box, specify the directory to which the tool 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. The default working directory is specified in all predefined templates through a $FileDir$ macros. To specify a custom working directory, type the path to it in the text box, or click and choose the directory in the Select Path dialog box, or click Insert Macro and select the desired macro from the list in the Macros dialog box. If you leave the field empty, IntelliJ IDEA uses the directory of the file where the File Watcher is invoked. |
Environment variables | In this text box, specify the environment variables that the tool requires but that are not specified at the operating system level. |
Advanced Options
Auto-save edited files to trigger the watcher |
|
Trigger the watcher on external changes |
|
Trigger watcher regardless of syntax errors |
|
Create output file from stdout |
|
Show console | From this drop-down list, choose when you want the File Watcher to open the console.
|
Output Filters | In this text box, specify the output filters associated with the tool. Based on these filters, absolute file paths and line numbers in the tool's output are converted into hyperlinks. Clicking those links opens the corresponding files in the editor. For example, to get useful error messages displayed, type $FILE_PATH$:$LINE$ $MESSAGE$ |
Examples of customizing the behaviour of an external tool
The only way to influence a third-party tool 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 compiler.
Suppose, you have a project with the following folder structure: By default, the generated files will be stored in the folder where the original file is. You can change this default location and have the generated files stored in the 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: