Cómo configurar el proyecto WebStorm / PhpStorm para que la inteligencia de código JS funcione bien para Node.js proyectos?


En WebStorm / PhpStorm / IDEA, hay una gran cantidad de funciones de inteligencia de código para JavaScript incorporadas. Sin embargo, al desarrollar un Nodo.la aplicación js, incluyendo todo desde node_modules complica las cosas con cosas como "Navegar a archivo" (no quiero que el IDE me ofrezca decenas de package.json s desde la carpeta node_modules, por ejemplo). Pero excluir la carpeta node_modules por completo tiene sus propios problemas - no hay finalización de código, etc.

Entonces, ¿cuál es la forma "correcta" de abordar esto en WebStorm? ¿Debo incluir solo algunos de los archivos de node_modules? O excluir todo de allí y de alguna manera utilizar el concepto de proyecto o bibliotecas globales?

Gracias.

Author: Borek Bernard, 2012-10-03

4 answers

Para hacer esto en la interfaz de usuario (probado desde PyCharm 2.7.3, resultado mostrado en PhpStorm 6.0.3):

Añadir bibliotecas JavaScript

Añadir Bibliotecas JavaScript

Archivo → Configuración
(Configuración del proyecto) → JavaScript → Bibliotecas

[Add...] →

Nombre: node_modules
Visiblilty: [x] proyecto Actual
[Conectar...]
{seleccione la carpeta del proyecto node_modules}

{repeat for bower }

Excluir carpeta de Proyecto
Excluir Carpeta Del Proyecto

(Configuración del Proyecto) → Estructura del Proyecto
Haga clic derecho en la carpeta → [Excluido]

Para hacer esto desde el proyecto .archivo iml:
Cambiando el .iml del proyecto a lo siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
  <component name="NewModuleRootManager" inherit-compiler-output="true">
    <exclude-output />
    <content url="file://$MODULE_DIR$">
      <excludeFolder url="file://$MODULE_DIR$/bower_components" />
      <excludeFolder url="file://$MODULE_DIR$/node_modules" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="library" name="node_modules" level="application" />
    <orderEntry type="library" name="bower_components" level="application" />
  </component>
</module>

Hizo que el editor excluyera node_modules y bower_components, pero los pusiera a disposición para completarlos y buscarlos en la biblioteca

Probado en PyCharm, IntelliJ y WebStorm.

 23
Author: fncomp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-22 15:41:55

Esto se ha solucionado en WebStorm 7, ver http://youtrack.jetbrains.com/issue/WEB-1927 .

 4
Author: Borek Bernard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-05 21:13:57

Desafortunadamente no hay una manera "correcta" fácil. Puede excluir todos los directorios node_modules que se encuentran dentro del directorio node_modules de nivel superior. Hará que la terminación sea mejor, pero no ideal.
Más discusión está aquí: http://devnet.jetbrains.net/message/5468926 .

 2
Author: Sergey.Simonchik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-04 13:51:10

Puede descargar un plugin para Node.integración js: http://plugins.intellij.net/plugin/?webide&pluginId=6098

 2
Author: DanMan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-29 14:17:57