如何让VSCode仅显示TypeScript npm库根路径导入补全选项?
解决方案
1. 修正lib的package.json配置
把main和types的路径改成相对路径(绝对路径会导致解析异常),再添加exports字段限制仅允许从包主入口导入:
{ // ...其他配置 "main": "./build/index.js", "types": "./build/index.d.ts", "exports": { ".": { "types": "./build/index.d.ts", "default": "./build/index.js" } } }
exports字段会明确告诉TypeScript,这个包只有"lib"这一个合法导入入口,不允许直接导入内部子模块路径。
2. 确保lib的TypeScript构建配置正确
在lib的tsconfig.json中配置以下内容(没有则新建):
{ "compilerOptions": { "declaration": true, "declarationDir": "./build", "outDir": "./build", "rootDir": "./src" }, "include": ["src/**/*"], "exclude": ["build"] }
重新构建lib,确保build目录下生成正确的index.js和index.d.ts,且index.d.ts包含从submodule/thing导出的类型。
3. 调整project的TypeScript模块解析模式
在project的tsconfig.json中,设置moduleResolution为node16或nodenext,以支持exports字段的解析:
{ "compilerOptions": { // ...其他配置 "moduleResolution": "node16" } }
4. 刷新VSCode的TypeScript服务
按下Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(Mac),执行TypeScript: Restart TS Server,让所有配置生效。
完成以上调整后,VSCode的自动补全只会显示Add import from "lib"这一个选项,同时保持lib作为project的依赖引用,不会直接导入源码。
内容的提问来源于stack exchange,提问作者Cheetah
相关产品推荐
相关产品推荐

