【问题标题】:How to correctly use an "external" JS module for PhpStorm completion?如何正确使用“外部”JS 模块来完成 PhpStorm?
【发布时间】:2021-10-10 11:28:58
【问题描述】:

本题涉及:Git子模块、Docker、JavaScript、Nuxt。

情况

有2个项目:

  • back:包含带有 API 的 docker 容器和为 gRPC 编译的 js 文件,这是一个 git 子模块。
  • front:消费那些js文件

使用的包管理器是yarn

当前设置

文件夹架构如下

.
+-- back (git submodule)
    +-- js
        +-- file1
        +-- file1
+-- front
    +-- package.json

front 有一个链接到 js 文件的声明卷:

front:
  volumes:
    - ../back/js:/usr/src/app/js_back:ro

然后我可以使用以下方法引用这些文件:

import ... from '@/js_back/...'

问题是 PhpStorm 不知道 @/js_back/... 是现实的 ../back/js

此外,由于这些文件通常是必需的,因此我希望能够通过 @back/... 引用那些文件。

替代方案

  1. package.json 中声明一个链接到文件的依赖项。 => 这似乎不起作用
  2. 在自定义包注册表下发布 JS 部分。 => 这些文件与back 紧密耦合,因此更难维护。
  3. 提示 PhpStorm 关于文件位置。 => 我在其他一些问题上看到“将目录标记为资源根”,但这似乎不起作用。

【问题讨论】:

  • @ 来自哪里?它是在您的构建文件(webpack 等)中某处定义的别名吗?您可以使用webpack integration 来解析这些别名。或者,只需在项目根文件夹中的jsconfig.json 中定义您的别名
  • 哦,刚刚注意到“在 package.json 中声明一个链接到文件的依赖项”。在安装纱线后工作,因为它复制了node_modules下的目录。

标签: docker phpstorm package.json


【解决方案1】:

所以我找到了解决方案。在我的 package.json 我确实声明了

{
  "dependencies": {
    "@my/back": "file:./js_back"
  }
}

yarn install 之后,内容被复制到 node_modules 下,以便 PHPStorm 可以正确地看到它并提供相应的补全。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-16
    • 2012-06-26
    • 2019-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多