RubyMine 6.3.0 Web Help

File | Settings | File Watchers

settings

The dialog box opens when you click the Add new.png or Edit edit1 button on the File Watchers page. Use the dialog box to create a project File Watcher based on a predefined RubyMine 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

Item Description
Name In this text box, type the name of the File Watcher. By default, RubyMine suggests the name of the selected predefined template.
Description In this text box, describe the functionality of the File Watcher. Predefined templates already contain general information regarding the accepted input and produced output. Expand or update the description, if, for example, you have two File Watcher that apply to the same source code but differ from each other in some configuration settings.

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:
  1. Displaying paths to the File Watcher output files as links in error and other messages and logs. When you click such link, the corresponding file is opened in the editor.
  2. Error highlighting in the output files.
Immediate file synchronization
  • Select this check box to have the File Watcher invoked as soon as any changes are made to the source code.
  • If the check box is cleared, the File Watcher will start upon save (File | Save All, Shortcut Missing) or when you move focus from RubyMine (upon frame deactivation).
Track only root files When the File Watcher is invoked on a file, RubyMine detects all the files in which this file is included. For each of these files, in its turn, RubyMine again detects the files into which it is included. This operation is repeated recursively until RubyMine 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).
  • When this check box is selected the File Watcher runs only against the root files.
  • When the check box is cleared, the File Watcher runs against the file from which it is invoked and against all the files in which this file is included recursively within the specified scope.

Note

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:
  • Always: when this option is chosen, the File Watcher opens the console when it starts.
  • Error: when this option is chosen, the File Watcher opens the console only if any errors occur in transpilation.
  • Never: choose this option to suppress opening the console under any circumstances.
Check file for syntax errors
  • Select this check box to have the File Watcher ignore update, save, and change focus events in files that are syntactically invalid.
  • If this check box is cleared, the File Watcher starts anyway upon update, save, or frame deactivation, depending on the status of the Immediate file synchronization check box.

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.

Note

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:

  • Project Files: all the files within the project content roots (see Content Root and Configuring Content Roots).
  • Project Production Files: all the files within the project content roots excluding test sources.
  • Project Test Files: all the files within the project test source roots.
  • Open Files: all the files that are currently opened in the editor.

VCS Scopes: these scopes are only available if your project is under version control.

  • Changed Files: all changed files, that is, all files associated with all existing changelists.
  • Default: all the files associated with the changelist Default.
Alternatively, click the Browse button and configure a custom scope in the Scopes dialog box that opens.

For more details on scopes, see the pages Scopes and Scopes dialog.

Note

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:
  • Type the path explicitly.
  • Click the Browse button browseButton to open the Select Path dialog box and navigate to the desired location.
  • Click the Insert Macro button to open the Macros dialog box where you can select the relevant macro from the list.
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:
  • Type the list of arguments in the text box.
  • Click the Insert Macro button to open the Macros dialog box where you can select the desired macro from the list.

When specifying the arguments, follow these rules:

  • Use spaces to separate individual arguments.
  • If an argument includes spaces, enclose the spaces or the argument that contains the spaces in double quotes, for example, some" "arg or "some arg".
  • If an argument includes double quotes (e.g. as part of the argument), escape the double quotes by means of the backslashes, for example, -Dmy.prop=\"quoted_value"\.
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:
  • Type the path explicitly in the text box.
  • Click the Browse button browseButton to open the Select Path dialog box and navigate to the desired location.
  • Click the Insert Macro button to open the Macros dialog box, where you can select the desired macro from the list.

Tip

If the field is left blank, RubyMine uses the directory of the file where the File Watcher is invoked.

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 RubyMine 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:
  • Type the output paths manually. Use colons as separators.
  • Click the Insert Macro button to open the Macros dialog box, where you can select the desired pattern from the list.
Create output from stdout
  • When this check box is selected, RubyMine reads the native transpiler's output (standard output stream (stdout)) and generates the resulting files from it.
  • When the check box is cleared, the transpiler writes its output directly to the files specified in the Output paths to refresh field.

Tip

Some transpilers generate a standard output stream (stdout) file, others do not, which may lead to errors. Therefore it is strongly recommended to preserve the default setting.

Examples of customizing the behaviour of a transpiler
  • To have all the generated files stored in the output js folder without retaining the original folder structure under the app folder:
    1. In the Arguments text box, type:
      --output $ProjectFileDir$\js\ --compile --map $FileName$
                          
    2. 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:

    fileWatcherExampleImage2

  • To have the original folder structure under the app node retained in the output js folder:
    1. In the Arguments text box, type:
      --output $ProjectFileDir$\js\$FileDirRelativeToProjectRoot$\ --compile --map $FileName$
                          
    2. 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:

    fileWatcherExampleImage3

See Also

Procedures:

Reference:

Web Resources: