Vin*_*lou 5 javascript typescript visual-studio-code es6-modules
VS Code Intellisense 对于处理内部项目文件确实非常有帮助,它为我们提供自动完成功能,甚至可以利用编写的 JSDoc。
然而,我正在开发不同的 JS 项目,这些项目依赖于定制的 JS 库(带有 Bitbucket Cloud 存储库的 ES6 模块,通过 NPM 或 Yarn 检索)。
当然,我也希望从这些库的 Intellisense 中受益,因为我知道 JSDoc 是可用的。但遗憾的是,我似乎找不到办法。
我尝试在 jsconfig.json 中显式包含我的库中的文件,但无济于事:
{
"compilerOptions": {
"target": "es2017",
"moduleResolution": "node",
"checkJs": true,
"allowSyntheticDefaultImports": true,
"noEmit": true,
"noImplicitAny": false,
"strictNullChecks": false,
"alwaysStrict": true,
"sourceMap": false
},
"include": ["src/**/*", "node_modules/my-lib/**/*"]
}
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以告诉 VS Code 考虑我的库文件?据我了解,实现这一目标的一种方法是为每个库编写和发布打字稿定义文件。然而,我觉得我错过了一些东西,VS Code 肯定能够处理我的库 JS 文件,就像它处理内部项目文件一样。
小智 0
这个问题现在已经很老了,但我最近也遇到了同样的问题。这是我想出的。
正如您所提到的,一种方法是创建类型声明文件。幸运的是,您可以使用tsd-jsdoc包从 jsdoc 注释中执行此操作。
我将以下脚本添加到 package.json 来构建类型文件...
jsdoc -r src -t node_modules/tsd-jsdoc/dist -d lib
Run Code Online (Sandbox Code Playgroud)
这将创建一个lib/types.d.ts
文件。
在 package.json 中添加一个types
指向此文件的条目。
确保它作为 prepublishOnly 脚本的一部分运行,以便在运行时文件是最新的npm publish
。
一般来说,我的 src/index.js 文件仅由几行组成export { default as thing } from './thing';
。为了获得 vscode 可以读取的正确声明文件,我必须像这样格式化文件......
/** @module my-module */
export { default as thing1 } from './thing1';
export { default as thing2 } from './thing2';
Run Code Online (Sandbox Code Playgroud)
然后在 thing1 和 thing2 jsdoc 注释中添加导出@memberof module:my-module
,例如...
/**
* Thing 1
* @param {string} thing
* @memberof module:my-module
*/
function thing1(thing) {
}
export default thing1;
Run Code Online (Sandbox Code Playgroud)