Я создал проект (названный data_model
) с некоторыми классами, полезными в других моих проектах. Я создал полный gulpfile.js
, который не только компилирует мои .ts в .js, но и создает единый файл .d.ts
, который экспортирует мои символы, файл называется data_model.d.ts
и будет в корне проекта.
Теперь я создаю второй проект, назовем его my_cool_api
, который определяет в своих зависимостях зависимость от git data_model
Запуск npm install
, файлы .js загружаются в мой node_modules
Все красиво и красочно. Но папка typings.
my_cool_api
|—— package.json
|—— …
|—— app.ts
|—— node_modules
|—— data_model
|—— data_model.d.ts
|—— index.js
|—— lib
|—— my_class.js
|—— typings
|—— tsd.d.ts
|—— node
|—— …
Проблема здесь заключается в файле data_model.d.ts
, потому что самые первые строки этого файла будут ссылаться на несуществующую папку типизации. Давайте взглянем
///<reference path=“typings/mongoose/mongoose.d.ts" />
declare module 'data_model' {
import mongoose = require('mongoose');
export class MyClass {
…
}
}
Это заголовок файла .d.ts, который я сейчас создаю. Я пытался продублировать папку с типизированными данными (сделать так, чтобы ее нельзя было игнорировать, поскольку .npmignore установил бы ее во время установки npm), что создает следующее
|—— package.json
|—— …
|—— app.ts
|—— node_modules
|—— data_model
|—— data_model.d.ts
|—— typings <<<<<<<<<<<<<<<<<<< ADDED
|—— tsd.d.ts
|—— node
|—— ...
|—— index.js
|—— lib
|—— my_class.js
|—— typings
|—— tsd.d.ts
|—— node
|—— …
НО это даст мне сотню «дублирующих ошибок» (я думаю, потому что вокруг будет несколько файлов node.d.ts). Например:
[16:44:33] [tsc] > /my_cool_api/typings/node/node.d.ts(1553,9): error TS2300: Duplicate identifier 'cleartext'.
Мое решение прямо сейчас — скопировать любой файл .d.ts, который я нашел в node_modules, в папку с моими типизациями и изменить первые строки (ссылки) скопированных файлов в мою относительную папку с типизациями.
ДОЛЖЕН БЫТЬ СПОСОБ ЭТОГО СДЕЛАТЬ. (Я тоже пробовал с помощью команды tsd link)
Буду очень признателен за любую помощь.