我创建了一个npm在一些根项目中使用的自定义库.该库是用TypeScript编写的.所有来源都在一个/src文件夹下.
该tsconfig.json库包含那些编译器选项:
"sourceMap": true
"outDir": "dist"
Run Code Online (Sandbox Code Playgroud)
该package.json文件包含:
"main": "dist/src/index.js",
"typings": "dist/src",
"files": [
"src",
"dist"
],
Run Code Online (Sandbox Code Playgroud)
最后,生成的包包含生成的.js文件,d.ts文件和.ts源文件:
- package.json
- /dist (`.js` and `d.ts` files)
- /src (`.ts` files)
Run Code Online (Sandbox Code Playgroud)
在已安装此自定义库的根项目中,我可以在调用从库导入的函数的行上添加断点,然后单步调试它以调试其代码,所有这些都在TypeScript中.这很棒!
但是,在Visual Studio代码中,当我按CTRL-单击从库导入的函数而不进行调试时,它会将我引导到d.ts类型定义文件.我会prefere它带领到.ts源文件!目前的方式,如果我需要查看实际的源代码,我必须自己浏览/src库的文件夹/node_modules.
有没有办法直接在VSCode中转到TypeScript源文件,而不是类型定义文件?
当我按住CmdVSCode的同时单击导入的变量时,通常最终会看到该变量的TypeScript声明。有什么方法可以让VSCode带我去了解它的定义吗?我自己没有使用TypeScript,因此该功能目前对我没有帮助。
假设我想查看expressjs代码,但是当我单击var express = require('express')“转到定义”时,vscode将向我显示打字稿版本,而不是node_mudules.
我在这里搜索相关问题,例如如何在 VS Code 中查看原始 javscript 库源代码而不是 typescript 版本?或 github 中的相关问题,例如支持位于“node_modules”中的代码的“转到定义”。但我仍然不知道这是否可以做到。该问题已于 2016 年关闭,有人说
这是打字稿大脑的问题
这到底是什么意思?到底能不能做?
- - - 更新 - - -
发现它实际上是重复的,就像这样How can I go toimplementation of Something 而不是 TypeScript 声明?
Go to source definition是我需要的。
我是 vscode 的忠实粉丝。这是我的问题,假设我有这样的代码。
const express = require('express')
const app = express()
app.get('/', (req, res) => res.send('Hello World!'))
Run Code Online (Sandbox Code Playgroud)
当我CMD+Click在express(inside require) 或get函数上时,它会将我带到缓存在主文件夹中的打字稿定义。当我清除缓存时,它会将我带到内部定义node_modules,并且缓存将再次构建。而在 中webstorm,没有typescript缓存,它需要我进行node_modules定义。是否可以禁用打字稿定义并使用node_modules定义?
如图所示,当我点击express它时,它会将我带到打字稿定义,而不是打字稿node_modules定义。
有一个名为 的内置扩展TypeScript and JavaScript Language Features (vscode.typescript-language-features)。禁用它会起作用吗?我不知道,但我担心我会失去javascript智能感知。
有谁知道吗???