typescript /Yarn工作空间-引用的项目可能无法禁用发射

vaj7vani  于 2023-03-13  发布在  TypeScript
关注(0)|答案(2)|浏览(436)

我正在尝试使用 typescript 和Yarn工作区设置一个monorepo项目。
该项目的结构如下所示:

/example
/packages
  /lib1

示例是一个出于开发目的而使用这些包的应用程序。
当我使用yarn tsc --build --force时,我得到以下错误:

example/tsconfig.json:6:18 - error TS6310: Referenced project '/packages/intro' may not disable emit.

下面是tsconfig.json的例子:

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "./lib"
  },
  "references": [{ "path": "../packages/intro" }]
}

而这个项目的根源是:

{
  "$schema": "https://json.schemastore.org/tsconfig",
  "display": "React Native",
  "compilerOptions": {
    "allowJs": true,
    "allowSyntheticDefaultImports": true,
    "baseUrl": ".",
    "composite": true,
    "declaration": true,
    "esModuleInterop": true,
    "isolatedModules": true,
    "jsx": "react-native",
    "lib": ["es2017"],
    "module": "commonjs",
    "moduleResolution": "node",
    "noEmit": true,
    "paths": {
      "my-project/*": ["./packages/*/src"]
    },
    "resolveJsonModule": true,
    "skipLibCheck": true,
    "strict": true,
    "target": "esnext"
  },
  "exclude": [
    "packages/*/lib",
    "node_modules",
    "babel.config.js",
    "metro.config.js",
    "jest.config.js"
  ],
  "references": [{ "path": "./example" }, { "path": "./packages/lib1" }]
}

以及lib1的tsconfig.json:

{
  "extends": "../../tsconfig.json",
  "compilerOptions": {
    "outDir": "./lib"
  }
}

正如你所看到的,我把noEmit设置为true,所以我不知道错误是什么。我试着直接在每个tsconfig文件中设置这个值,但是没有像预期的那样做任何事情。

pbgvytdp

pbgvytdp1#

基于zerdox评论的解决方案:
只需添加以下内容:

"files": [],

到您的根目录tsconfig.json
示例:

{
  "files": [],
  "references": [
    {
      "path": "packages/types"
    }
  ]
}
xdyibdwo

xdyibdwo2#

noEmit设置为true将禁用发射,这就是错误所显示的内容。您需要将noEmit设置为false才能启用发射。

相关问题