Мне нужно собрать библиотеку, которая является оболочкой для soap API. Структура библиотеки следующая:
|-node_modules
|
|-src
| |-soapWrapperLibrary.ts
| |-soapLibraryClient.ts
|
|-types
| |-soapResponseType.d.ts
library
использует client
, который возвращает определенный объект soapResponseType
, который я определил.
Эта библиотека будет быть использованы в другом проекте стажера. Ничего не нужно толкать к npm или подобным. Я пытался скомпилировать его с tsc
, но результат компиляции проигнорировал определенный мной тип (soapResponseType.d.ts). Это приводит к ошибке при импорте моей библиотеки, потому что файл определения не может быть найден.
Я пробовал несколько подходов, которые относятся к скомпилированным типам с typeRoots
, без результата.
Я ожидаю от tsc
, что все мои файлы скомпилированы как один пакет или что-то, что может быть импортировано как единое целое, с типами и классами в нем.
Со следующими параметрами, единственное, что я получаю это следующая структура без следа soapResponseType.d.ts:
|-dist
| |-lib
| | |-soapWrapperLibrary.js
| | |-soapWrapperLibrary.js.map
| | |soapLibraryClient.js
| | |soapLibraryClient.js.map
| |-types
| | |-soapWrapperLibrary.d.ts
| | |soapLibraryClient.d.ts
Команда tsc --listFiles
показывает три файла, которые я создал: два .ts
файла и один .d.ts
Репо для репродукции https://github.com/TheoSl93/buildLibraryTest
Это мои tsconfig.json
и package.json
:
tsconfig
{
"compilerOptions": {
"target": "es5",
"module":"es2015",
"strict": true,
"declaration": true,
"outDir": "dist/lib",
"declarationDir": "dist/types",
"jsx": "preserve",
"importHelpers": true,
"moduleResolution": "node",
"experimentalDecorators": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"removeComments": true,
"sourceMap": true,
"baseUrl": ".",
"paths": {
"@/*": [
"./types"
]
},
"lib": ["es2015", "es2016", "es2017", "dom"],
"emitDecoratorMetadata": true,
"typeRoots": [
"node_modules/@types",
"types/*"
]
},
"typedocOptions": {
"mode": "modules",
"out": "docs",
},
"include": [
"src/**/*.ts",
"src/**/*.tsx",
"src/**/*.vue",
"test/**/*.ts",
"test/**/*.tsx"
],
"exclude": [
"node_modules",
"test"
],
}
пакет
"name": "soap-library",
"version": "0.0.1",
"description": "reproduce for stackoverflow",
"main": "dist/lib/soapLibraryClient.js",
"repository": "https://github.com/TheoSl93/buildLibraryTest.git",
"author": "Theo Sloot",
"license": "MIT",
"scripts": {
"prebuild": "rm -rf dist",
"build": "tsc --module commonjs"
},
"sideEffects": false,
На данный момент:
- Есть ли способ включить собственные определения в скомпилированные с использованием только
tsc
? - Это действительно необходимо? Может ли эта библиотека импортироваться с использованием только файлов
.ts
вместо скомпилированных файлов .js
?