Предполагая, что я создаю библиотеку с именем foo-bar и объединяю все мои скрипты в src/index.ts
для удобства, например:
export * from './foo'; // foo.tsx
export * from './bar'; // bar.tsx
export * from './definitions'; // definitions.d.ts
Сам definitions.d.ts
содержит только интерфейсы for FooParams
& BarParams
(компоненты реакции);
export interface FooParams { ... }
export interface BarParams { ... }
Сгенерированный dist/index.js
заканчивается следующим образом:
export * from './foo'; // foo.tsx
export * from './bar'; // bar.tsx
export * from './definitions'; // definitions.d.ts
//# sourceMappingURL=index.js.map
При попытке использовать эту библиотеку в другом узле проект (т.е. реагировать):
import React from 'react';
import {Foo} from 'foo-bar';
export const MyComponent = () => <Foo theme="black">Hi Foo!</Foo>
, он вызовет ошибку, аналогичную этой (т.е. если включить его в проект реагирования и запустить react-script start
):
Failed to compile.
/path/to/node_modules/foo-bar/dist/index.js
Module not found: Can't resolve './definitions' in '/path/to/node_modules/foo-bar/dist/index.js'
Очевидно, потому что definitions.js
нет, но это уже не важно.
Вопрос : Есть ли способ указать TS C не включать экспорт .d.ts
файлов в сгенерированный javascript?
Ни один из параметров компилятора (tsconfig. json), похоже, не может создать это (Возможно, я чего-то упускаю).
Кто-нибудь знает, где вообще начать решать эту проблему, потому что Google не очень-то кооператив? Как только я набираю «сгенерированный javascript сохраняет экспорт .d.ts», я получаю те же 5 проблем с github и 5 вопросов о стеке, которые совершенно не помогают.
tsconfig.json
Я использую:
{
"compilerOptions": {
"outDir": "./dist",
"target": "es2015",
"module": "esnext",
"noImplicitAny": true,
"suppressImplicitAnyIndexErrors": true,
"removeComments": false,
"declaration": true,
"sourceMap": true,
"moduleResolution": "node",
"jsx": "react",
"lib": [
"dom",
"es7"
]
},
"include": [
"./src"
]
}