Utilizo alias de ruta de paquete web para la carga del módulo ES6.
Por ejemplo, si defino un alias para en utils
lugar de algo como
import Foo from "../../../utils/foo"
, puedo hacer
import Foo from "utils/foo"
El problema es que una vez que empiezo a usar alias, WebStorm pierde el seguimiento de la importación y me quedo con advertencias y sin autocompletar.
¿Hay alguna forma de indicarle a WebStorm que utilice esos alias?
fuente
import { Component } from '@angular/core'
, eso también se resuelve. ¿Cómo puedo implementar elat
para dejar más claro que la ruta es un alias?Logré configurar alias para WebStorm 2017.2 dentro de un paquete web como este:
fuente
Para el registro: en PHPSTORM , trabajando con laravel mix , logré resolver esto creando un archivo webpack.config.js por separado como:
const path = require('path') const webpack = require('webpack') module.exports = { ... resolve: { extensions: ['.js', '.json', '.vue'], alias: { '~': path.resolve(__dirname, './resources/assets/js') } }, ... }
Y luego importarlo en webpack.mix.js como:
const config = require('./webpack.config') ... mix.webpackConfig(config)
Asegúrese de que el archivo de configuración del paquete web esté apuntado correctamente en la configuración de PhpStorm en: Configuración> Idiomas y marcos> Javascript> Webpack
fuente
mix
IDE informa que el símbolo no ha sido resuelto, lo cual es un fuerte indicio de que en realidad no funcionará. Faltan líneas, pero de importancia crítica, en las que el símbolo de "mezcla" se requiere / importa de alguna manera. Añádalos a su respuesta.Puede definir rutas personalizadas, para que WebStorm / PhpStorm pueda entender sus alias. Pero asegúrese de que sean idénticos a sus alias. Cree un archivo en su directorio raíz y llámelo así:
webStorm.config.js
(cualquierjs
archivo estará bien). Luego configura tus caminos dentro:System.config({ "paths": { "components/*": "./src/components/*", "core/*": "./src/core/*", ... } });
WebStorm / PhpStorm reconocerá
System
como su propio módulo y tratará este archivo como configuración.fuente
Esto se responde en un comentario, pero para evitar que las personas busquen en los comentarios y enlacen solo información, aquí está:
A partir de WS2017.2, esto se hará automáticamente . La información está aquí .
De acuerdo con esto, webstorm resolverá automáticamente los alias que se incluyen
webpack.config
en la raíz del proyecto. Si tiene una estructura personalizada ywebpack.config
no está en la carpeta raíz, vayaSettings | Languages & Frameworks | JavaScript | Webpack
y configure la opción en la configuración que necesita.Nota: La mayoría de las configuraciones tienen una
base
configuración que luego llama a una versióndev
oprod
. Para que esto funcione correctamente, debe indicarle a webstorm que use dev one .fuente
@
como un alias para misrc
carpeta, pero incluso después de señalar Webstorm a mi configuración, todavía no resolvería mis importaciones correctamente. Sin embargo, una vez que marqué lasrc
carpeta como Resource Root, funcionó como se esperaba. Sería bueno si Webstorm pudiera manejar alias, pero no es gran cosa.'@': '../src')
. Además, ¿está utilizando un archivo para la configuración de su paquete web o varios? Preguntándose qué es diferente. ¡Gracias!'@': path.resolve(__dirname, '../src/components')
. Utilizo varios archivos,webpack.base.conf.js
luegodev
yprod
versiones. Ellos a su vez llaman una carpeta de configuración conindex.js
,dev.env.js
yprod.env.js
. Apunto mi webstorm para mirar elwebpack.dev.conf.js
archivo..dev.conf
hizo el truco. Apuntar al.base.conf
no estaba funcionando. ¡Buena llamada!No ahora , también estábamos usando alias de ruta para los archivos en nuestro proyecto de reacción. Los nombres de importación eran más cortos, pero perdimos mucho en la verificación estática de webstorm, así como en las funciones de finalización.
Más tarde tomamos la decisión de reducir el código a solo 3 niveles de profundidad, así como a un solo nivel para las partes comunes. La función de finalización de ruta de webstom
(ctrl + space)
incluso ayuda a reducir la sobrecarga de escritura. La compilación de producción no usa nombres más largos, por lo que apenas hace ninguna diferencia en el código final.Sugeriré que reconsidere su decisión sobre los alias. Pierde el significado semántico de los módulos que provienen de node_modules y su propio código, además de hacer referencia a los archivos de alias una y otra vez para darle sentido a su código, es una sobrecarga mucho mayor.
fuente
En PHPStorm (usando 2017.2 actualmente), no he podido hacer que las configuraciones del paquete web funcionen correctamente con respecto a los alias.
Mi solución implica el uso de la sección "Directorios" de la configuración principal. Solo tuve que marcar cada carpeta a la que hace referencia un alias como raíz de origen, luego hacer clic en el menú desplegable de propiedades para cada una y especificar el alias como un "Prefijo de paquete". Esto hizo que todo se vincule para mí.
No estoy seguro de si la sección Directorios existe en WebStorm, pero si lo hace, parece ser un método infalible para hacer que los alias de importación funcionen.
fuente
Para cualquiera que tenga dificultades: path.resolve () debe ser llamado con el primer argumento "__dirname" para Idea (Websorm) para poder resolver la ruta correctamente.
Funcionará para Idea (Websorm):
alias: { '@someAlias': pathLib.resolve(__dirname, 'path/to/directory') }
No funcionará para Idea (Websorm) (aunque siga siendo un alias de paquete web válido):
alias: { '@someAlias': pathLib.resolve('path/to/directory') }
fuente
@someAlias
correctamente?Webstorm no puede leer webpack.config si
module.exports
devuelve una función. Por ejemplomodule.exports = function (webpackEnv) { return { mode: isEnvProduction ? 'production' : isEnvDevelopment && 'development', ... } }
Verifique su archivo de configuración, tal vez esto sea porque es un problema.
fuente
agregue
jsconfig.js
en la raíz de su proyecto{ "compilerOptions": { "baseUrl": ".", "paths": { "~/*": ["./src/*"] } } }
fuente