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.
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.jsoncontains the above code.typingsfolder which I wrote intypeRootsis empty.After that, I run the following command in terminal:
tsc --traceResolutionThe idea is I am trying to use
Phaseras a global variable in mymain.tsfile.Bug 1)
Expected behavior:
What should happen is
Phasershouldn't get resolved because compiler should start looking into my custom foldertypings.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 havenode_modulesspecified.What I have tried:
I tried to exclude
node_modulesfolder, I thought maybe they still get compiled and that's why this happens, but I couldn't makeexcludework."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.tsand put something like this in there, but compilation is successful, So I guess the bug is related totypeRoots.Bug 2)
Let's change the above
tsconfig.jsonto the following:What should happen now is
Phasershould be resolved from./node_modules/phaser/typesand not take care of anything else such as trying to findpackage.jsoninnode_modules/phaserand looking attypesproperty in thatpackage.json. But what actually happens is this doesn't get resolved at all onUbuntuversions, since ubuntu is 'case-sensitive. This config works fine onOS 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.