如何让 VS Code 智能感知在多个 node_modules 文件夹中搜索打字稿

Posted

技术标签:

【中文标题】如何让 VS Code 智能感知在多个 node_modules 文件夹中搜索打字稿【英文标题】:How to get VS Code intellisense to search multiple node_modules folders for typescript 【发布时间】:2016-07-27 06:06:10 【问题描述】:

我有一个结构如下的节点/打字稿项目:

- node_modules // => these are loaded npm/package.json
- src
  - node_modules // => shared modules for my project, not on npm
    - lib.ts
  - app.ts
- package.json

我的私有包有一个辅助node_modules 文件夹,主要是这样我可以从项目中的任何地方导入它们,而不必担心导入时的相对路径(如suggested here)。

这很好用,因为我可以 import * as lib from 'lib' 代替 import * as lib from '../../lib'var lib = require('../../lib')

Typescript 编译/加载 lib 没有问题,但 VS Code intellisense 抱怨它“找不到模块 'lib'”。

FWIW,这是我的 tsconfig.json


  "compilerOptions": 
    "experimentalDecorators": false,
    "emitDecoratorMetadata": false,
    "module": "commonjs",
    "target": "es2015",
    "rootDir": "src"
  

【问题讨论】:

我怀疑这是因为我的共享/私有模块没有类型定义......但这些模块也是用打字稿编写的。 lib 模块 package.json 中是否有任何属性可以用来告诉 vscode/typescript 这是一个打字稿模块? 【参考方案1】:

我需要修改 libpackage.json 以包含“typings”属性:


  "name": "lib",
  "version": "0.0.1",
  "main": "lib.js",
  "typings": "lib"

【讨论】:

以上是关于如何让 VS Code 智能感知在多个 node_modules 文件夹中搜索打字稿的主要内容,如果未能解决你的问题,请参考以下文章

如何在 VS Code 中为模板中的 vue 道具启用 Typescript 打字和智能感知?

VS Code 中的 jQuery 智能感知

VS Code 中 Javascript 的自动补全/建议/智能感知

vs code 智能感知结果仅限于 1

如何在 VS Code 中获得注释智能感​​知

VS 2013 中的 Dojo 自定义模块智能感知