首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单列引用的TypeScript tsc类型检查

单列引用的TypeScript tsc类型检查
EN

Stack Overflow用户
提问于 2022-01-08 09:24:29
回答 2查看 1.1K关注 0票数 6

我正在使用Yarn工作区,我需要一个cli命令来检查位于packages/*的源文件的类型。

最初,我使用webpack (使用esbuild,它不检查类型)和使用tsc --noEmit独立检查类型来构建我的项目。他们合作得很好。

在切换到Yarn工作区后,我将整个项目分成了几个小包。

整个项目是这样的:

代码语言:javascript
运行
复制
packages/
  foo/
    index.ts          // import bar from 'bar'; console.log(bar);
    package.json      // { "name": "foo" }
    tsconfig.json     // { "references": [ { "path": "../bar" } ] }
  bar/
    index.ts          // export default "hello world";
    package.json      // { "name": "bar" }
    tsconfig.json     // { "compilerOptions": { "composite": true } }
package.json          // { "workspaces": [ "packages/*" ] }

然后我发现tsc没能跑。当我尝试tsc --noEmit -p packages/foobar时,它失败了,出现了一些错误,如:

代码语言:javascript
运行
复制
Output file '/packages/foobar/index.d.ts' has not been built from source file '/packages/foobar/index.ts'.

然而,webpack工作得很好。

在上网后,官方文件告诉我,这两个功能只能在构建模式下使用。但是当我尝试tsc --noEmit -b packages/foobar时,由于--noEmit标志和构建模式之间的冲突,它也失败了。此外,如果我删除了--noEmit标志,tsc将尝试为我生成一堆.js文件,但我不希望生成这些文件。

我只想要一个cli命令来检查类型,而不输出任何像我的IDE那样的额外文件。如何正确运行tsc?或者有什么替代办法吗?

EN

回答 2

Stack Overflow用户

发布于 2022-05-07 19:41:36

尝试将typescript作为依赖项添加到要检查的包的package.json中。

(编辑):而且看起来tsc --noemit不适用于项目引用.

票数 0
EN

Stack Overflow用户

发布于 2022-09-09 16:21:32

只是遇到了同样的问题,并通过使用TS项目参考资料和我将以下内容添加到tsconfig.json中“解决了”

代码语言:javascript
运行
复制
"compilerOptions": {
  ...
  "emitDeclarationsOnly": true,
  ...
}

这告诉类型记录编译器不要将任何TS转到JS,而是只发出.d.ts声明文件。

然后在我的package.json中:

代码语言:javascript
运行
复制
scripts: {
   "lint": "tsc -b"
}
"

这将构建任何TS项目引用和您正在运行的tsc项目。虽然我们打开了'emitDeclarationOnly‘,但它只会为这个proj构建声明文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70631058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档