如何以编程方式获取typescript-eslint支持的最新TypeScript版本?
如何将TypeScript更新至typescript-eslint支持的最新版本?
问题描述
我想要将TypeScript更新至typescript-eslint支持的最新版本,但使用pnpm info typescript-eslint命令查询时,要么输出里没有TypeScript相关信息,要么显示支持所有TS版本(*),具体输出如下:
// pnpm info typescript-eslint peerDependencies { eslint: '^8.56.0' } // pnpm info typescript-eslint devDependencies { 'downlevel-dts': '*', jest: '29.7.0', prettier: '^3.0.3', rimraf: '*', typescript: '*' } // pnpm info typescript-eslint dependencies { '@typescript-eslint/eslint-plugin': '7.1.1', '@typescript-eslint/parser': '7.1.1' }
目前我只能通过抓取文档页面的方式获取版本范围,命令如下,但这显然不是最优解,而且在仓库里也没找到专门用于查询的文件:
pnpm i "typescript@$( curl -s https://typescript-eslint.io/users/dependency-versions/ | \ grep -Po 'The version range of TypeScript currently supported is.*<code>\K.*(?=</code>)' | \ sed 's/>/>/;s/</</g' )"
请问有没有更好的方法?
解决方案
直接查询核心包的peer依赖
typescript-eslint本身是一个元包(meta-package),仅封装了@typescript-eslint/eslint-plugin和@typescript-eslint/parser两个核心工具,真正对TypeScript版本的约束定义在这两个核心包的peer依赖中。
你可以直接查询@typescript-eslint/parser的peer依赖来获取准确的TypeScript版本范围:
pnpm info @typescript-eslint/parser peerDependencies
输出会包含类似这样的内容:
{ eslint: '^8.56.0', typescript: '>=4.7.4 <6' }
基于这个结果,你可以用以下命令自动安装符合范围的最新TypeScript版本:
pnpm add typescript@$(pnpm info @typescript-eslint/parser peerDependencies | grep -Po '"typescript": "\K[^"]+')
或者更简洁的方式,利用pnpm的--peer参数自动安装符合当前已装工具链的peer依赖版本(前提是你已经安装了@typescript-eslint/parser):
pnpm add typescript --peer
这种方式无需依赖网页抓取,就能确保安装的TypeScript版本完全符合typescript-eslint的要求。
内容的提问来源于stack exchange,提问作者tukusejssirs
相关产品推荐
相关产品推荐

