-
Notifications
You must be signed in to change notification settings - Fork 13.2k
Description
TypeScript Version: 3.8.3
Code
This is my tsconfig.json
{
"compilerOptions": {
"typeRoots": [
"./typings"
],
"types": ["Phaser"]
}
}In my project root, I got package.json, package-lock.json, main.ts(empty one), tsconfig.json.
tsconfig.json contains the above code.
typings folder which I wrote in typeRoots is empty.
After that, I run the following command in terminal:tsc --traceResolution
The idea is I am trying to use Phaser as a global variable in my main.ts file.
Bug 1)
Expected behavior:
What should happen is Phaser shouldn't get resolved because compiler should start looking into my custom folder typings.
Actual behavior:
Somehow it still gets resolved. And this is what it prints: Type reference directive 'Phaser' was successfully resolved to '/Applications/XAMPP/xamppfiles/htdocs/phaser-test/node_modules/Phaser/types/phaser.d.ts' with Pac kage ID 'phaser/types/[email protected]', primary: false. .
I don't know how it finds it since in my typeRoots, I don't have node_modules specified.
What I have tried:
I tried to exclude node_modules folder, I thought maybe they still get compiled and that's why this happens, but I couldn't make exclude work.
"exclude": ["node_modules/*"]
"exclude": ["./node_modules/*"]
"exclude": ["./node_modules"]
but none of these worked. , but i don't think that will help because i created one file test.ts and put something like this in there, but compilation is successful, So I guess the bug is related to typeRoots.
let a:number = 10;
a="gio";Bug 2)
Let's change the above tsconfig.json to the following:
"compilerOptions": {
"typeRoots": [
"./node_modules/phaser/types",
],
"types": ["Phaser"]
},What should happen now is Phaser should be resolved from ./node_modules/phaser/types and not take care of anything else such as trying to find package.json in node_modules/phaser and looking at types property in that package.json. But what actually happens is this doesn't get resolved at all on Ubuntu versions, since ubuntu is 'case-sensitive. This config works fine on OS x and windowsbecausePhasergets resolved fromnode_modules/phaser/package.json's types propertywhich shouldn't be happening because of mytypeRoots`.
Basically both things are so much related to each other.