This question is a follow-on from How to use paths in tsconfig.json? except I want to do it for a single module.
I have a module:
- It's implemented in src/functions/foo.ts
- Its contents are: - export default interface Bar { }
- It's imported by another module elsewhere using a non-relative path: - import * as Foo from "foo"
The compiler doesn't find it:
error TS2307: Cannot find module 'foo'
This tsconfig doesn't fix that problem ...
{
    "compilerOptions": {
        "noEmit": true,
        "strict": true,
        "module": "commonjs",
        "target": "es2017",
        "noImplicitAny": true,
        "moduleResolution": "node",
        "sourceMap": true,
        "outDir": "build",
        "baseUrl": ".",
        "paths": {
            "foo": ["src/functions/*"],
            "*": [
                "node_modules/*"
            ]
        }
    },
    "include": [
        "./src/**/*", "./typings/**/*", "./test/**/*", "./test-integration/**/*"
    ]
}
... but this does:
        "paths": {
            "*": [
                "node_modules/*",
                "src/functions/*"
            ]
        }
Why didn't the first version of paths work --- what was I doing wrong, what can I do to ensure that "src/functions/*" is used only when importing foo (and not when importing *)?
(I'm using tsc version 3.1.6 on Windows with Node.js).
 
    