Skip to content

tsconfig project reference didn't support folder #10907

@cyrilluce

Description

@cyrilluce

Vue version

3.4.27

Link to minimal reproduction

https://stackblitz.com/edit/vitejs-vite-akygzo?file=tsconfig.json

Steps to reproduce

Check the stackblitz, if tsconfig project reference to file is ok, but folder will fail

What is expected?

image

What is actually happening?

[plugin:vite:vue] [@vue/compiler-sfc] Failed to resolve import source "@/types".

System Info

No response

Any additional comments?

Actually there are two problems:

  • Project reference didn't support folder
  • For empty tsconfig or non-exists tsconfig, resolve absolute path will throw error.
    which included is undefined in resolveWithTS
    image
    image

Why there are non-exists reference?
My project is a monorepo, use pnpm workspace, has packages a, b and c, and there npm package name is @xx/xx-a, @xx/xx-b and @xx/xx-c

  • a deps b, b deps c
  • There are same tsconfig.json project reference to get better ts dev experience (e.g. a/tsconfig.json ref to ../b/tsconfig.json)
  • pnpm will link packages/a/node_modules/@xx/xx-b to packages/b, same as b to c

In this case, tsconfig.json in node_modules will get wrong relative path, packages/a/node_modules/@xx/xx-b/tsconfig.json ref to ../b/tsconfig.json, which should be ../xx-b/tsconfig.json
Only make monorepo package dir name sync to package name could prevent this. (e.g. package @xx/xx-a should use xx-a directory)

Metadata

Metadata

Assignees

No one assigned

    Labels

    🍰 p2-nice-to-havePriority 2: this is not breaking anything but nice to have it addressed.scope: sfc

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions