Как использовать пути в tsconfig для одного модуля? - PullRequest
0 голосов
/ 30 ноября 2018

Этот вопрос является продолжением Как использовать пути в tsconfig.json? за исключением того, что я хочу сделать это для одного модуля.

У меня есть модуль:

  • Он реализован в src/functions/foo.ts
  • Его содержимое:

    export default interface Bar {
    }
    
  • Он импортируется другим модулем в другом месте, используя не-относительный путь:

    import * as Foo from "foo"
    

Компилятор не находит его:

error TS2307: Cannot find module 'foo'

Этот tsconfig не решает эту проблему ...

{ "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/**/*" ] }

... но это так:

"paths": { "*": [ "node_modules/*", "src/functions/*" ] }


Почему не появилась первая версия paths работа --- что я делал не так, что я могу сделать, чтобы "src/functions/*" использовался только при импорте foo (а не при импорте *)?

(я используюtsc версии 3.1.6 для Windows с Node.js).

1 Ответ

0 голосов
/ 30 ноября 2018

Вы назначаете слово foo содержимому каталога src/functions/*.

Но foo подобным образом может использоваться только для указания точного местоположения одного файла (модуля),без подстановочного знака, вот так:

"paths": {
    "foo": ["src/functions/foo"],
    "*": [
        "node_modules/*"
    ]
}

Вероятно, вы ищете:

"paths": {
    "foo/*": ["src/functions/*"],
    "*": [
        "node_modules/*"
    ]
}

(foo/* вместо foo)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...