Introduction

A number of tools are started through Node.js, for example, the CoffeeScript, TypeScript, and Less compilers, YUI, UglifyJS, and Closure compressors, Karma test runner, Grunt task runner, etc. The Node Package Manager (npm) is the easiest way to install these tools, the more so that you have to install Node.js anyway.

Depending on the desired location of the tool executable file, choose one of the following methods:

Install the tool globally at the PhpStorm level so it can be used in any PhpStorm project.

Install the tool in a specific project and thus restrict its use to this project.

Installing Node.js and Node Package Manager (npm)

If you are going to use the command line mode, make sure the path to the parent folder of the Node.js executable file and the path to the npm folder are added to the PATH variable. This enables you to launch the tool and npm from any folder.

Installing an external tool globally

Global installation makes a tool available at the PhpStorm level so it can be used in any PhpStorm project. Moreover, during installation the parent folder of the tool is automatically added to the PATH variable, which enables you to launch the tool from any folder.

Run the installation from the command line in the global mode:

Open the embedded Terminal (View | Tool Windows | Terminal) and switch to the directory where NPM is stored or define a PATH variable for it so it is available from any folder, see Installing NodeJs.

Type the following command at the command prompt:

npm install -g <tool name>

The -g key makes the tool run in the global mode. Because the installation is performed through NPM, the tool is installed in the npm folder. Make sure this parent folder is added to the PATH variable. This enables you to launch the tool from any folder.

Run NPM from PhpStorm using the Node.js and NPM page of the Settings dialog box.

Open the Settings / Preferences Dialog by pressing Ctrl+Alt+S or by choosing File | Settings for Windows and Linux or PhpStorm | Preferences for macOS, and click Node.js and NPM under Languages & Frameworks.

On the Node.js and NPM page that opens, the Packages area shows all the Node.js-dependent packages that are currently installed on your computer, both at the global and at the project level. Click .

In the Available Packages dialog box that opens, select the required package to install.

Select the Options checkbox and type -g in the text box next to it.

Optionally specify the product version and click Install Package to start installation.

Installing an external tool in a project

Local installation in a specific project restricts the use of a tool to this project.

Run NPM from PhpStorm using the Node.js and NPM page of the Settings dialog box.

Open the Settings / Preferences Dialog by pressing Ctrl+Alt+S or by choosing File | Settings for Windows and Linux or PhpStorm | Preferences for macOS, and click Node.js and NPM under Languages & Frameworks.

On the Node.js and NPM page that opens, the Packages area shows all the Node.js-dependent packages that are currently installed on your computer, both at the global and at the project level. Click .

In the Available Packages dialog box that opens, select the required package.

Optionally specify the product version and click Install Package to start installation.

Project level installation is helpful and reliable in template-based projects of the type Node Boilerplate or Node.js Express, which already have the node_modules folder. The latter is important because NPM installs the tool in a node_modules folder. If your project already contains such folder, the tool is installed there.

Projects of other types or empty projects may not have a node_modules folder. In this case npm goes upwards in the folder tree and installs the tool in the first detected node_modules folder. Keep in mind that this detected node_modules folder may be outside your current project root.

Finally, if no node_modules folder is detected in the folder tree either, the folder is created right under the current project root and the tool is installed there.

In either case, make sure that the parent folder of the tool is added to the PATH variable. This enables you to launch the tool from any folder.

Installing an external tool as a development dependency

If a tool is a documentation or a test framework, which are of no need for those who are going to re-use your application, it is helpful to have it excluded from download for the future. This is done by marking the tool as a development dependency, which actually means adding the tool in the devDependencies section of the package.json file.

With PhpStorm, you can have a tool marked as a development dependency right during installation. Do one of the following:

Run the installation from the command line:

Launch the built-in Terminal (View | Tool Windows | Terminal).

Switch to the project root folder and at the command prompt type:

npm install --dev <tool name>

Run NPM from PhpStorm using the Node.js and NPM page of the Settings dialog box.

Open the Settings / Preferences Dialog by pressing Ctrl+Alt+S or by choosing File | Settings for Windows and Linux or PhpStorm | Preferences for macOS, and click Node.js and NPM under Languages & Frameworks.

On the Node.js and NPM page that opens, the Packages area shows all the Node.js-dependent packages that are currently installed on your computer, both at the global and at the project level. Click .

In the Available Packages dialog box that opens, select the package.

Select the Options checkbox and type --dev in the text box next to it.

Optionally specify the product version and click Install Package to start installation.

After installation, a tool is added to the devDependencies section of the package.json file.

Running npm scripts

PhpStorm provides the interface for running npm scripts. PhpStorm parses package.json files, recognizing definitions of scripts, lets you build trees of scripts and navigate between a a script in the tree and its definition in the package.json file, and supports running and debugging tasks as well as configuring the script execution mode and output.

From a tree of scripts in the dedicated NPM Tool Window. The tool window opens when you invoke npm by choosing Show npm Scripts on the context menu of a package.json in the Project tool window or of a package.json opened in the editor.

The result of executing a script is displayed in the Run tool window. The tool window shows the npm script output, reports the errors occurred, lists the packages or plugins that have not been found, etc. The name of the last executed script is displayed on the title bar of the tool window.

Building a tree of scripts

If the npm tool window is not opened yet: Select the required package.json file in the Project tool window or open it in the editor and choose Show npm Scripts on the context menu.

In either case, the npm tool window opens showing the scripts tree built according to the selected or opened package.json file.

In the npm tool window, click on the toolbar and choose the required package.json file from the list. PhpStorm adds a new node and builds a scripts tree under it. The title of the node shows the path to the package.json file according to which the tree is built.

To re-build a tree, switch to the required node and click on the toolbar.

To sort the scripts in a tree by their names Click on the toolbar, choose Sort by on the menu, and then choose Name. By default, a tree shows the scripts in the order in which they are defined in package.json (option Definition order).

Running npm scripts from the tree of scripts

To run a script Double click the required script. Alternatively select it in the tree and press Enter or choose Run <script name> on the context menu.

To run several scripts Use the multiselect mode: hold Shift (for adjacent items) or Ctrl (for non-adjacent items) keys and select the required scripts, then choose Run on the context menu of the selection.

Running tasks according to a run configuration

Besides using temporary run configurations that PhpStorm creates automatically, you can create and launch your own npm run configurations.

To create an npm run configuration

Choose Run | Edit Configuration on the main menu.

Click on the toolbar and select npm from the pop-up list.

In the Run/Debug Configuration: NPM dialog box that opens, specify the name of the run configuration, the npm command line command to execute, the scripts to run (use blank spaces as separators), the location of the package.json file to retrieve the definitions of the scripts from, and the command line arguments to execute the script with.

Specify the location of the Node executable file and the Node.js-specific options to be passed to this executable file, see Node parameters for details.

To run a script according to a run configuration, select the run configuration from the list on the main tool bar and then choose Run | Run <configuration name> on the main menu or click the Run toolbar button . The output is displayed in the Run tool window.

Running npm scripts automatically

If you have some scripts that you run on a regular basis, you can add the corresponding run configurations to a list of startup tasks. The tasks will be executed automatically on the project start-up.

From the drop-down list, choose the required npm run configuration. The configuration is added to the list.

If no applicable configuration is available in the project, click and choose Edit Configurations. Then define a configuration with the required settings in the Run/Debug Configuration: NPM page that opens. When you save the new configuration it is automatically added to the list of startup tasks.

Running a script as a as a before-launch task

Open the Run/Debug Configurations Dialog dialog by choosing Run | Edit Configurations on the main menu, and select the required configuration from the list or create it anew by clicking and choosing the relevant run configuration type.

In the dialog box that opens, click in the Before launch area and choose Run npm script from the drop-down list.

In the NPM Script dialog box that opens, specify the package.json file where the required script is defined, select the script to execute, choose the command to apply to it, and specify the arguments to execute the script with.

Specify the location of the Node.js interpreter and the parameters to pass to it.