Webstorm 智能提示配置

刚学 cocos 没几天,一直困扰 Webstrom 智能提示支持。我在网上逛了一圈,发现基本都是用 IDE 设置里 Languages & Frameworks > JavaScript > Libraries 将 cocos 引擎源码引用为库。而且网上帖子大多只引用到 engine 那一层文件夹,我设置后打开 Webstorm 扫描索引这个库需要非常漫长的时间(整个引擎文件夹,太大啦)。

于是,尝试精简引用,最终删减到只需引用 engine/@typesengine/bin/.declarations 两个文件夹。(但还有个问题,即使设置为 global 库,每次新建项目后都得进设置勾选启用)

图示:

后来我又看了官方文档,试着用 VSCode 打开项目,发现无需配置就能使用,因此我就觉得 Webstorm 那边应该是项目中文件的问题,或许可以不必到动用 IDE 设置的程度。经过一晚上的摸索,终于找到 Webstorm 中无法智能提示的主要原因及其解决办法。

解决方法如下:

  1. Webstorm 打开项目,先将 temp/declarations 文件夹从 Excluded 状态中移除(如果看不到 temp 文件夹,可以尝试点击项目目录面板右上角的齿轮按钮,Tree Appearance > Show Excluded Files

  2. 分别打开 cc.d.tsjsb.d.ts 两个文件

    image

  3. 将光标移到 reference 标签的路径 path 值中,ATL+ENTER (或右键 > Show Context Actions),选择 Convert path to relative,将此处的绝对路径转为相对路径(主要原因: Webstorm 对于这类路径依赖只识别相对路径,所以才会导致原来的 cc.d.tsjsb.d.ts 不起作用)

  4. 转为相对路径后,继续光标原处 ATL+ENTER (或右键 > Show Context Actions),选择 Create library with files outside the project

  5. 此时,在项目目录下边的 External Libraries 中已成功添加了 ts-external-references/cc.d.ts,文件 jsb.d.ts 同理

    image

  6. 最后测试一下,成功出现智能提示数据 :v:

4赞

你这个方法得把项目跟引擎放同一个盘

哦, 所以根源是 webstorm 不识别 ///<reference 绝对路径啊.
然而始终这个麻烦在于, 每次升级引擎, 就要从头配置一遍.

虽然更像是 webstorm 的锅,
还是建议官方以后将编辑器目录下的 cc.d.ts 直接拷贝到 项目/temp 目录, 提升兼容性…

确实,不同盘的话相对路径就不好使了,只能从设置中加入库那个方法了(虽然我一直没分盘)。疑惑 webstorm 的 reference 为啥不能识别绝对路径……

另一方面,还是希望 cocos 可以在新建项目时直接 copy 一份到项目中以提高兼容性

确实,希望cocos可以直接copy一份到项目中

webstorm 为啥不能识别句对路径我没搞明白……

首先谢谢上面题主的分享和其他几位的探讨,这个让我想到了一个粗暴的方法,也可以解决,虽然是每个项目单独做,但是基本以及满足开发了不多废话,直接说答案

就是在 题主上面的操作

  1. Webstorm 打开项目,先将 temp/declarations 文件夹从 Excluded 状态中移除(如果看不到 temp 文件夹,可以尝试点击项目目录面板右上角的齿轮按钮, Tree Appearance > Show Excluded Files
  2. 分别打开 cc.d.tsjsb.d.ts 两个文件 里面写了 绝对路径,我们直接拿对应的绝对路径下的文件 替换即可
    比如我的绝对路径是:

C:\ProgramData\cocos\editors\Creator\3.7.2\resources\resources\3d\engine\bin.declarations\cc.d.ts

C:\ProgramData\cocos\editors\Creator\3.7.2\resources\resources\3d\engine@types\jsb.d.ts

  1. 替换后效果如下:

总结,就是

  1. 打开 temp 文件夹下声明文件夹的 取消排除 2. 用引擎声明文件 替换 项目内 声明文件

其他:对于 声明文件 报错 解决方法是 在 声明文件(.d.ts)的 第一行 添加 // @ts-nocheck

// @ts-nocheck
declare module “cc” {
…这里是内容
}

在我的环境,以上几种方式尝试都失败了,后来经过多种综合测试,发现这两步可以支持提示。有需要的可以参考一下
1、配置library.


2、将declarations 取消排除

参考 Creator v3.0.0-Preview.1 在 WebStorm 下不能自动 import

我用的 jetbrains tool装的 webstrom 转绝对路径失败 手打完绝对路径就能成功了 :sweat_smile:

请教下 每次打开项目后 那两个文件又被重置了 需要怎么设置?

当时我那时候 好像不会被重置,后面用回2.4.x啦,目前如果你实在觉得麻烦,就写个本地脚本强制 覆盖先用着

:ok_hand: