WebStorm 中导入的路径别名

IT技术 javascript webstorm webpack es6-module-loader
2021-03-21 12:32:38

我使用 webpack 路径别名来加载 ES6 module。

例如,如果我定义了一个别名utils而不是类似的东西
import Foo from "../../../utils/foo",我可以做
import Foo from "utils/foo"

问题是,一旦我开始使用别名,WebStorm 就会失去对导入的跟踪,我会收到警告并且没有自动完成功能。

有没有办法指示 WebStorm 使用这样的别名?

6个回答

就在这里。

实际上,Webstorm 并不能自动解析和应用 Webpack 配置,但您可以通过相同的方式设置别名。

你只需要标记“utils的”(在你的例子)作为一个文件夹资源根(右击,标记目录/资源根)。

右键单击文件夹

我们只是设法使用以下结构:

/src
    /A
    /B
    /C

我们在 Webpack 中将 AB 和 C 文件夹声明为别名。在 Webstorm 中,我们将“src”标记为“Resource Root”。

现在我们可以简单地导入:

import A/path/to/any/file.js

代替

import ../../../../../A/path/to/any/file.js

同时仍然让 Webstorm 正确解析和索引所有代码,链接到文件,自动完成等等......

多个文件夹和多个 webpack 配置怎么样?对我不起作用,可能是因为:“默认情况下,WebStorm 将分析项目根目录中的 webpack 配置文件,但您可以在 Preferences | Languages & Frameworks | JavaScript | Webpack 中选择另一个文件” blog.jetbrains.com /webstorm/2017/06/...
2021-04-25 12:32:38
angular2 中的导入呢import { Component } from '@angular/core',这也解决了。我如何实现at以更清楚地说明路径是别名?
2021-04-26 12:32:38
2021-05-06 12:32:38
我曾在 WebStorm 2016.2.3 中尝试过,但此解决方案不起作用。
2021-05-10 12:32:38
当不直接从 Webstorm 构建时,这将有效地破坏事情
2021-05-15 12:32:38

我设法在 webpack 中为 WebStorm 2017.2 设置别名,如下所示:

在此处输入图片说明

这个帮助了我
2021-04-22 12:32:38
谢谢!最后为这个烦人的问题提供了一些解决方案。
2021-04-25 12:32:38
我们应该将此答案标记为最佳答案。谢谢。
2021-04-26 12:32:38
有用。该文件应包括 module.exports = {resolve: {alias: {'@utils': path.resolve(__dirname, '../utils/')}}}。此外,我必须重新启动 WebStorm 才能应用更改。
2021-04-29 12:32:38
谢谢!它在 PhpStorm 2019.1 中帮助了我
2021-04-29 12:32:38

作为记录:在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 的配置中正确指向 webpack 配置文件:设置 > 语言和框架 > Javascript > Webpack

请考虑在他们的项目中实际上没有使用 webpack 的用户的情况,并且希望单独设置这两个文件的目的是为了教 PHPStorm 如何解决别名。那些人不知道应该在“...”中添加什么才能使 webpack.mix.js 文件真正用于此目的。具体来说,如果我简单地删除“...”,mixIDE 会报告符号未解析,这强烈暗示它实际上不会起作用。以某种方式需要/导入“混合”符号的地方缺少但非常重要的行。请将这些添加到您的答案中。
2021-05-06 12:32:38

您可以定义自定义路径,以便 WebStorm/PhpStorm 可以理解您的别名。但请确保它们与您的别名相同。在您的根目录中创建文件并像这样调用它:(webStorm.config.js任何js文件都可以)。然后在里面配置你的路径:

System.config({
  "paths": {
    "components/*": "./src/components/*",
    "core/*": "./src/core/*",
    ...
  }
});

WebStorm/PhpStorm 将识别System为它自己的module,并将将此文件视为配置。

有没有办法对特定的 js 文件执行此操作?例如,我想使用“config”代替“src/server/lib/config/index.js”。我试过了,"config": "./src/server/lib/config/index.js"但这没有用。
2021-04-30 12:32:38
这确实有效!真的帮助我完成了关于 Rollup+Svelte 的项目!
2021-05-03 12:32:38
这应该是最好的答案。非常感谢你。
2021-05-03 12:32:38
惊人的!不幸的是,我还必须使用别名的重复项手动配置 ESLint 和 Rollup。至少我有一个干净的环境,但我希望 JetBrains 能够像他们支持 Webpack 一样原生地支持 Rollup。
2021-05-15 12:32:38
谢谢。有用。问:您知道有关此文件可用的完整选项的任何文档吗?
2021-05-18 12:32:38

这是在评论中回答的,但为了避免人们深入研究评论并仅链接信息,这里是:

从 WS2017.2 开始,这将自动完成信息在这里

据此,webstorm 将自动解析包含在webpack.config项目根目录中的别名如果您有自定义结构并且webpack.config不在根文件夹中,请转到Settings | Languages & Frameworks | JavaScript | Webpack并将选项设置为您需要的配置。

注意:大多数设置都有一个base配置,然后调用 adevprodversion。为了使其正常工作,您需要告诉 webstorm 使用 dev one

我的设置非常相似(vue-webpack-pwa)并将其指向成功.dev.conf指向.base.conf不起作用。好决定!
2021-05-04 12:32:38
我认为这可能需要打开一个问题。我可以确认它有效,但通常我会打开它并且所有 webpack 别名都未解析。我做了一个 "Invalidate Caches and Restart" ,它像宣传的那样工作
2021-05-04 12:32:38
除非使用 Webpack 别名,否则这似乎有效。@用作src文件夹的别名,但即使将 Webstorm 指向我的配置,它仍然无法正确解析我的导入。但是,一旦我将该src文件夹标记为 Resource Root,它就会按预期工作。如果 Webstorm 可以处理别名就好了,但没什么大不了的。
2021-05-13 12:32:38
您是否使用符号作为别名,如下所示:'@': '../src'). 另外,您是为 webpack 配置使用一个文件还是多个文件?想知道有什么不同。谢谢!
2021-05-17 12:32:38
我的一个例子是'@': path.resolve(__dirname, '../src/components')我使用多个文件,webpack.base.conf.js然后devprod版本。他们依次使用index.js,dev.env.js调用配置文件夹prod.env.js我指向我的 webstorm 查看webpack.dev.conf.js文件。
2021-05-18 12:32:38