Sha*_*ful 10 visual-studio-code
每次我在 Visual Studio Code 中打开一个新项目时,它都会默认使用自己的 TypeScript 版本,而不是工作区的版本。有没有办法默认使用工作区版本,这样我就不必每次都更改它?
\n例如,
\n\n我尝试查看设置,似乎只能提示我\xe2\x80\x94none 每次都默认为我想要的行为。
\n如何强制 Visual Studio Code 始终对所有项目使用工作区的 TypeScript 版本?
\nsta*_*all 15
我认为在撰写本文时(当最新的 VS Code 版本为 1.83 时)您目前可以做的最好的事情是(在settings.json中):
"typescript.tsdk": "./node_modules/typescript/lib",
// ^ pretty sure this needs to go in workspace settings
"typescript.enablePromptUseWorkspaceTsdk": true,
// ^ this can go in user settings, but you may as well put it in each
// workspace's settings so collaborators don't need to know about it.
Run Code Online (Sandbox Code Playgroud)
设置的说明分别为:
lib*.d.ts指定TypeScript 安装下用于 IntelliSense 的tsserver 和文件的文件夹路径,例如:./node_modules/typescript/lib。
- 当指定为用户设置时,TypeScript 版本会
typescript.tsdk自动替换内置 TypeScript 版本。- 当指定为工作区设置时,
typescript.tsdk允许您通过命令切换到使用该工作区版本的 TypeScript for IntelliSenseTypeScript: Select TypeScript version。有关管理 TypeScript 版本的更多详细信息,请参阅TypeScript 文档。
启用提示用户使用工作区中配置的 TypeScript 版本进行 Intellisense。
实际上,您可以在用户 settings.json 文件中使用该设置,而不仅仅是工作区 .vscode/settings.json 文件。似乎无论你把它放在哪里,相对路径都会被视为相对于当前工作区文件夹。
目前没有设置可以让工作区在没有提示的情况下使用工作区的 TypeScript SDK。
从我的快速测试来看,在用户设置中使用相对于当前工作区的路径(而不是工作区设置)是行不通typescript.tsdk的(不幸的是,因为用户设置是根据文档自动进行的,我认为这意味着它不会需要提示)。
至于目前的原因,在typescript.enablePromptUseWorkspaceTsdk设置存在之前(虽然我假设评论的逻辑今天仍然适用),维护者曾经评论过:
我们支持
typescript.tsdk在工作区设置中进行设置,但出于安全原因,我们始终要求用户选择使用工作区版本的打字稿。这就是本地存储发挥作用的地方。
提示基本上是在问:您是否信任此工作区以及它来自哪里。TypeScript 的工作区版本还可以执行工作区中的其他文件,因此我们无法合理确保 VS Code 只运行受信任的文件。我们默认做安全的事情:不从工作区加载任何内容。无论如何,切换到从工作区加载任何代码都必须是选择加入的,并且必须基于用户操作。
这里最合理的解决方案是添加一个工作区设置,当用户首次打开工作区时自动显示选择 tsdk 提示
事情就是这样typescript.enablePromptUseWorkspaceTsdk发生的。
您可能会对一个功能请求感兴趣:VSCode 应默认在当前项目中使用 TypeScript 版本 #172732
我们之前已经讨论过这个问题,但出于以下几个原因决定不这样做:
TS 的工作区版本往往会过时。旧 TS 版本存在错误和性能问题,我们的捆绑版本通常已修复这些问题。我们不会对旧 TS 版本进行任何修复,并且这些旧版本的问题报告通常也没有帮助
虽然在某些情况下使用不同的 TS 版本进行编辑与编译很重要,但通常情况并非如此。
在你的注释中:
VSCode 更新 TypeScript 版本非常慢
VS Code 的稳定版本通常会在一到两周内获取最新的稳定 Typescript。最新的 TS 通常会在一天后出现在 VS Code 内部人员中。听起来您的情况似乎是在尝试使用即将推出的 TS beta 或 RC 中的功能
我认为对于需要立即使用最新 TS 的高级用户来说,切换到使用 TS 的工作区版本并不是一个很大的障碍
折衷方案是您已经调用的设置:
typescript.enablePromptUseWorkspaceTsdk。这使得高级用户更容易切换,而不会影响绝大多数不需要切换到工作区版本的用户的体验(对于他们来说切换实际上可能会导致更糟糕的用户体验)
这是您可能感兴趣的另一个功能请求:将工作区信任与 enablePromptUseWorkspaceTsdk #135713 结合起来。引用该功能请求:
现在我们在 VSCode 中拥有工作区信任功能。单独的提示感觉
enablePromptUseWorkspaceTsdk有点多余。typescript.tsdk当用户已经信任工作区时,我们可以自动遵守工作区设置吗?这不会降低安全性,并且使得
typescript.tsdk在我们庞大的开发者用户群中分发变得更加容易。
其中有讨论讨论和实现它(带有一些阻塞设计问题)(请参阅此),以及 Pull Request 草案:fix(typescript-language-features): tsdk trust #190057。
| 归档时间: |
|
| 查看次数: |
4074 次 |
| 最近记录: |