Я использую псевдонимы пути webpack для загрузки модуля ES6.
Например, если я определю псевдоним utils
вместо чего-то вроде
import Foo from "../../../utils/foo"
, я могу сделать
import Foo from "utils/foo"
Проблема в том, что как только я начинаю использовать псевдонимы, WebStorm теряет отслеживание импорта, и у меня остаются предупреждения и нет автозаполнения.
Есть ли способ указать WebStorm использовать такие псевдонимы?
источник
import { Component } from '@angular/core'
, это тоже решено. Как я могу реализовать,at
чтобы было более ясно, что путь является псевдонимом?Мне удалось настроить псевдонимы для WebStorm 2017.2 в веб-пакете следующим образом:
источник
Для записи: в PHPSTORM , работая с laravel mix , мне удалось решить эту проблему, создав файл webpack.config.js отдельно, например:
const path = require('path') const webpack = require('webpack') module.exports = { ... resolve: { extensions: ['.js', '.json', '.vue'], alias: { '~': path.resolve(__dirname, './resources/assets/js') } }, ... }
А затем импортируем его в webpack.mix.js, например:
const config = require('./webpack.config') ... mix.webpackConfig(config)
Убедитесь, что файл конфигурации веб-пакета правильно указан в конфигурации PhpStorm в: Настройки> Языки и рамки> Javascript> Webpack.
источник
mix
IDE сообщит , что символ не разрешен, что является сильным намеком на то, что на самом деле он не будет работать. Есть отсутствующие, но критически важные строки, где символ «микс» каким-то образом требуется / импортируется. Пожалуйста, добавьте их к своему ответу.Вы можете определять собственные пути, чтобы WebStorm / PhpStorm мог понимать ваши псевдонимы. Но убедитесь, что они совпадают с вашими псевдонимами. Создайте файл в корневом каталоге и назовите его примерно так:
webStorm.config.js
(любойjs
файл подойдет). Затем настройте свои пути внутри:System.config({ "paths": { "components/*": "./src/components/*", "core/*": "./src/core/*", ... } });
WebStorm / PhpStorm распознает
System
собственный модуль и будет рассматривать этот файл как конфигурацию.источник
На это ответят в комментарии, но чтобы люди не копались в комментариях и не ссылались только на информацию, вот она:
Начиная с WS2017.2 это будет выполняться автоматически . Информация здесь .
В соответствии с этим webstorm автоматически разрешит псевдонимы, включенные
webpack.config
в корневой каталог проекта. Если у вас есть настраиваемая структура, иwebpack.config
ее нет в корневой папке, перейдитеSettings | Languages & Frameworks | JavaScript | Webpack
и установите для параметра нужную конфигурацию.Примечание. Большинство настроек имеют
base
конфигурацию, которая затем вызывает версиюdev
илиprod
. Чтобы это работало должным образом, вам нужно указать webstorm, чтобы он использовал dev .источник
@
в качестве псевдонима для своейsrc
папки, но даже после того, как я указал Webstorm на мою конфигурацию, он все равно не разрешил мой импорт правильно. Однако как только я пометилsrc
папку как Resource Root, все заработало, как ожидалось. Было бы неплохо, если бы Webstorm мог обрабатывать псевдонимы, но ничего страшного.'@': '../src')
. Кроме того, вы используете один файл для конфигурации своего веб-пакета или несколько? Интересно, что отличается. Благодаря!'@': path.resolve(__dirname, '../src/components')
. Я использую несколько файлов,webpack.base.conf.js
потомdev
иprod
версии. Они, в свою очередь, вызывают папку config с помощьюindex.js
,dev.env.js
иprod.env.js
. Я направляю свой веб-шторм, чтобы посмотретьwebpack.dev.conf.js
файл..dev.conf
. Указание на.base.conf
не работало. Хороший звонок!Не сейчас , мы также использовали псевдонимы путей для файлов в нашем проекте реакции. Имена импорта были короче, но мы многое потеряли в статической проверке веб-шторма, а также в функциях завершения.
Позже мы приняли решение сократить код до трех уровней глубины, а также до одного уровня для общих частей. Функция завершения пути в webstom
(ctrl + space)
даже помогает снизить накладные расходы на набор текста. В производственной сборке не используются более длинные имена, поэтому окончательный код практически не имеет значения.Предлагаю пересмотреть ваше решение по поводу псевдонимов. Вы теряете семантическое значение модулей, поступающих из node_modules и вашего собственного кода, а также снова и снова ссылаетесь на файлы псевдонимов, чтобы понять свой код, - это гораздо большие накладные расходы.
источник
В PHPStorm (в настоящее время используется 2017.2) мне не удалось заставить конфигурации веб-пакетов правильно работать в отношении псевдонимов.
Мое исправление предполагает использование раздела основных настроек «Каталоги». Мне просто нужно было пометить каждую папку, на которую ссылается псевдоним, как корень источников, затем щелкнуть раскрывающееся меню свойств для каждой и указать псевдоним как «Префикс пакета». Это сделало все для меня связным.
Не уверен, существует ли раздел «Каталоги» в WebStorm, но если он есть, это кажется надежным методом для работы с псевдонимами импорта.
источник
Для всех, кто борется: path.resolve () должен вызываться с первым аргументом "__dirname", чтобы Idea (Websorm) могла правильно определить путь.
Будет работать на Идею (Websorm):
alias: { '@someAlias': pathLib.resolve(__dirname, 'path/to/directory') }
Не будет работать для Idea (Websorm) (пока еще действующий псевдоним webpack):
alias: { '@someAlias': pathLib.resolve('path/to/directory') }
источник
@someAlias
правильно распознавать ?Webstorm не может читать webpack.config, если
module.exports
возвращает функцию. Напримерmodule.exports = function (webpackEnv) { return { mode: isEnvProduction ? 'production' : isEnvDevelopment && 'development', ... } }
Проверьте свой файл конфигурации, возможно, это проблема.
источник
добавить
jsconfig.js
в корень вашего проекта{ "compilerOptions": { "baseUrl": ".", "paths": { "~/*": ["./src/*"] } } }
источник