File Watchers in PhpStorm - PhpStorm Video Tutorial, This video is a part of JetBrains PhpStorm Video Tutorials by JetBrains Technical Evangelist Duration: 2:35 Posted: Jun 18, 2013 The easiest way to add the file watcher is by just opening a SASS file. PhpStorm will recognize it and show you a little Notification above the file content. Resolving asset allocation issues using SASS in PHPStorm. I have a project in which the folder structure of the main assets is as follows: /css /css/sass /js /images.
A File Watcher is a PhpStorm system that tracks changes to your files and runs a third-party standalone application. PhpStorm provides predefined File Watcher templates for a number of such standard popular third-party tools (compilers, compressors, prettifiers, and others).
You can also configure a custom File Watcher to run any other third-party tool.
File watchers have two dedicated code inspections:
The File watcher available inspection is run in every file where a predefined File Watcher is applicable. If the project has no relevant File Watcher configured, PhpStorm suggests to add one.
The File watcher problems inspection is invoked by a running File Watcher and highlights errors specific to it. Tinder for mac download.
You can use one of the available templates or configure a File Watcher from scratch. A configured File Watcher can be saved in your project settings or in the IDE settings and used in different projects.
When you open a file where a predefined File Watcher is applicable, PhpStorm displays a pane where suggests activating it.
Click Yes to activate the File Watcher with the default configuration.
If you click No, PhpStorm considers the suggested File Watcher suppressed. You can still create and enable it manually as described in Creating a File Watcher below.
For information on File watchers for specific tools, see the corresponding pages:
Note that using some of these tools in PhpStorm requires that you install plugins on the Settings/Preferences | Plugins page as described in Installing plugins from JetBrains repository.
Before you start
Make sure the File Watchers bundled plugin is enabled on the Settings/Preferences | Plugins page, see Managing plugins for details.
Creating a File Watcher
In the Settings/Preferences dialog Ctrl+Alt+S, click File Watchers under Tools. The File Watchers page opens showing a list of File Watchers that are already configured in this project and in the IDE.
Click and choose the predefined template from which you want to create a File Watcher. The choice depends on the tool you are going to use. To use a tool that is not on the list, choose Custom. The New Watcher dialog opens.
In the Name field, type the name of the File Watcher. By default, PhpStorm suggests the name of the selected predefined template.
Configuring the expected type and location of input files
Use the controls in the Files to watch area to define the range of files where you want to apply the File Watcher.
From the File type list, choose 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.
Select the Scope in which the File Watcher is applicable.
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.
Select one of the predefined scopes from the list. For a project-level File Watcher, you can also click to configure a custom scope in the Scopes Command and conquer generals deluxe edition mac download. dialog that opens.
All Places: all the scopes listed below.
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.
Scratches and Consoles: all the files from the Scratches and Consoles directory located in the Project tool window.
Open Files: all the files that are currently opened in the editor.
Current File: the file opened in the active editor tab.
VCS Scopes: these scopes are only available if your project is under version control.
All Changed Files: all changed files, that is, all files associated with all existing changelists.
Default Changelist: all the files associated with the changelist
Default
.
Alternatively, click and configure a custom scope in the Scopes dialog that opens.
See Scopes and file colors for details.
Optionally: specify how you want the File Watcher to deal with dependencies. A root file is a file that is not included (for example via
import
) in any other file within the specified scope.To run the File Watcher only against root files, select the Track only root files checkbox.
Clear the checkbox to run the File Watcher against the file from which it is invoked and against all the files in which this file is recursively included within the specified scope.
Note that the Scope setting overrides the Track only root files checkbox setting: if a dependency is outside the specified scope, the File Watcher is not applied to it.
This option is available only for Babel, Closure Compiler, Jade, Less, Sass/ SCSS, Stylus, and UglifyJS.
Configuring interaction with the external tool
In the Tool to run on changes area, specify the tool to use, the arguments to pass to it, the expected output file types, and so on.
In the Program field, specify the path to the executable file of the tool (.exe, .cmd, .bat, or other depending on the specific tool).
To use the program filename instead of its full path, add the path to its folder to the system environment variable PATH.
On Windows, you can skip the .com, .exe, .cmd or .bat extension.
To use a jar archive, specify the absolute path to it. Alternatively, to use a relative path, add its parent folder to the PhpStorm path variables on the Appearance & Behavior | Path Variables page of the Settings/PreferencesCtrl+Alt+S.
In the Arguments field, define the arguments to pass to the tool.
Arguments are usually specified using macros, for example,
$FileName$
or$FileNameWithoutExtension$
, that will be replaced with actual file names.Type the macros manually or click and select the relevant pattern fom the list in the Macros dialog that opens.
When specifying the arguments, follow these rules:
Use spaces as separators.
If an argument contains spaces, enclose them or the entire argument in double quotes:
some' 'arg
or'some arg'
.If an argument contains double quotes, use backslashes to escape them:
-Dmy.prop='quoted_value'
.
In the Output paths to refresh field, specify the files where the tool stores its output: the resulting source code, source maps, and dependencies. Based on these settings, PhpStorm recognizes the files generated through compilation.
Note, that changing the value in the Output paths to refresh field 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 field: type the output paths with colons as separators and use macros.
Output paths are usually specified using macros. Type the path manually or click and select the relevant pattern from the list.
Expand the Working Directory and Environment Variables hidden area.
Define the environment variables. For example, specify the
PATH
variable for the tools that are required for starting the tool you are configuring but are not referenced in the path to it. In most cases it is Node.js or ruby.exe. Such situation may result from custom manual installation instead of installation through the Node Package Manager (npm) or gem manager.In the Working Directory field, 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 field, or click and select the directory in the Select Path dialog, or click and select the desired macro from the list in the Macros dialog.If you leave the Working Directory field empty, PhpStorm uses the directory of the file where the File Watcher is invoked.
Configuring advanced options
In the Advanced Options area, customize the default behaviour of the File Watcher.
Specify the events that will invoke the File Watcher:
To invoke the File Watcher as soon as any changes are made to the source code, select the Auto-save edited files to trigger the watcher checkbox.
When the checkbox is cleared, the File Watcher starts upon save (File | Save All) or when you move the focus from PhpStorm (on frame deactivation).By default, the File Watcher wakes up on any saved change, including the updates received from you version control system when you, for example, check out a branch. To ignore such changes and invoke the File Watcher only when you update your code in PhpStorm, clear the Trigger the watcher on external changes checkbox.
Specify whether you want the File Watcher to interact with the PhpStorm syntax parser:
When the Trigger watcher regardless of syntax errors checkbox is selected, the File Watcher start regardless of the syntactical correctness of a file. The File Watcher will start upon update, save, or frame deactivation, depending on the status of the Auto-save edited files to trigger the watcher checkbox.
When the Trigger watcher regardless of syntax errors checkbox is cleared, the File Watcher ignores all triggers in files that are syntactically invalid and starts only in error-free files.
Use the Create output file from stdout checkbox to specify how you want to generate the output file.
When the checkbox is selected, PhpStorm reads the native tool's output
standard output stream (stdout)
and generates the resulting files from it.When the checkbox is cleared, the tool writes its output directly to the files specified in the Output paths to refresh field.
In the Show console list, choose when you want the File Watcher to open the console.
Always: with this option, the console always opens after the tool execution is completed.
On error: with this option, the console opens after the tool execution only when the
Exit code
is different from0
.Never: choose this option to suppress opening the console at all.
Showing information reported by File Watcher in the editor
If the tool configured in the File Watcher reports errors or warnings about your code with the links to the files and specific lines, you can see this information right in the editor:
In Preferences/Settings | Editor | Inspections, enable the inspection File Watcher Problems.
In the Output Filters field of the Edit Watcher dialog, describe the format of the output you want to match. Use the macros
$FILE_PATH$
,$LINE$
, and$MESSAGE$
for that. You need to avoid using special symbols like braces and dot with. The text matched with the
$MESSAGE$
macro will be shown in the editor.
Example
The tool reports errors in the following format:
You can also use the Output filter to make paths in the watcher’s output clickable.
Saving, enabling and disabling File Watchers
Once you’ve saved the new File Watcher, you can decide if it’s going to be available only in the current project (select Project from the Level list) or for all projects (select Global ).
To enable or disable a File Watcher, open the Settings/Preferences dialog Ctrl+Alt+S, go to Tools | File Watchers, and select or clear the checkbox next to it.
When a File Watcher is enabled, it starts automatically as soon as a file of the selected type and in the selected scope is changed or saved, see Configuring advanced options.
If an error occurs while a File Watcher is running, the File Watcher is automatically disabled. To restore the status, enable the File Watcher manually.
Enabling global File Watchers for new projects
Global File Watchers can be automatically enabled in all new projects that you create in the future.
Phpstorm Sassdoc
Open the Settings for New Projects dialog (File | Settings for New Projects), go to Tools | File Watchers, and select the checkboxes next to the required File Watchers.
Alternatively, on the Welcome Screen, select Settings from the Configure list. In the dialog that opens, select the checkboxes next to the relevant File Watchers.
Troubleshooting File Watchers
There might be a red error message next to the File Watcher in the list in Preferences/Settings | Tools | File Watchers.
Here is a list of possible errors:
Reported Problem | Problem Description | Workaround |
---|---|---|
Unknown Scope error | The File Watcher uses a scope that is not defined in this project. | Double-click the watcher and select an available scope or create a new one. |
Not found error | The project uses a global File Watcher that was removed. | Delete the watcher from the list using the Remove button or edit it to create a new global watcher with the same name. |
PhpStorm runs numerous identical File Watcher tasks Mp3 player download for mac. | After a bulk update, for example, from your VCS, PhpStorm runs a separate File Watcher task for each saved file. | Add a file-specific macro (like &FileNameWithoutExtension& ) in the Arguments field, see Configuring interaction with the external tool. |
Phpstorm Scp
In the first post of this litte blog series I showed you how to install SASS manually and how to compile it using the terminal. But this way is not very user friendly and you could easily forget to start the compiler/watch when working on a project.
Adding a file watcher
The easiest way to add the file watcher is by just opening a SASS file. PhpStorm will recognize it and show you a little Notification above the file content. Just click the “Yes” link and the settings screen will open:
If you don’t see the notification, you will find the option to add a file watcher at “File | Settings | Tools | File Watchers”. Here you just click the green plus icon to add a new file watcher and choose SCSS (not Sass, as this would be a file watcher to .sass files, the alternativ syntax, which is less frequently used):
Adjusting the file watcher settings
The default settings are quite good. PhpStorm will most probably find the path to your sass executable. In my case it’s a Windows file path:
One of the options I usually change is the “Arguments” setting. I prefer the expanded output style and not the default nested one, as it looks more like CSS you would usually write manually. My “Arguments” setting looks like this:
Phpstorm Issue
Conclusion
Phpstorm Sass Lint
That’s all. Now every time you change your SCSS files (you don’t even have to save them explicitly with the default settings), your files will be compiled into CSS files. The file watcher will even recognize if you change a file that is imported into another file. If you don’t know what that means, just wait for my next blog posts, were I will explain some of the fundamentals of SASS.
Phpstorm Sassoon
Note: If you use the “Tools | Deployment” of PhpStorm to deploy to a FTP server, make sure you activate “Upload external changes” in the “Options” settings, as otherwise the compiled CSS file would not be uploaded.