Псевдоним пути импорта TypeScript
В настоящее время я работаю над приложением TypeScript, которое состоит из нескольких модулей Node, написанных на TypeScript, которые установлены вnode_modules
каталог.
Прежде чем продолжить, я хотел бы отметить, что я использую TypeScript 2.0, я не против использования версии 2.1 dev, если это необходимо. Я просто хочу, чтобы это работало.
Структура каждого Node-модуля примерно такая:
dist/
es2015/
index.js
utils/
Calculator.js
Calculator.d.ts
Date.js
Date.d.ts
Flatpack.js
Flatpack.d.ts
src/
index.ts
utils/
Calculator.ts
Date.ts
Flatpack.ts
Папка dist является сгенерированным источником, и этот путь настраивается с помощьюoutDir
внутри моегоtsconfig.json
файл. Я также настроилmain
собственность в моемpackage.json
бытьdist/es2015/index.js
.
Важные вещи, на которые стоит обратить внимание:
В моем проекте я используюmoduleResolution
типnode
Я использую TypeScript 2.0Я не спрашиваю, как импортировать файл из пакета. Я устанавливаю пакет через Npm, а затем импортирую его черезpackagename/
из приложения, которое использует этот модуль.Теперь приходит мой вопрос / проблема. При импорте файлов из этого модуля я хотел бы иметь возможность сделать это:
import {Sin, Cos, Tan} from "common-utils/utils/Calculator";
Однако файл не может быть преобразован вdist/es2015/utils
каталог. В идеале я бы хотел, чтобы мой импорт разрешался из этого конкретногоdist
папку, а не из корня, что, как представляется, происходит.
Приведенный выше импорт должен быть записан следующим образом, чтобы заставить его работать:
import {Sin, Cos, Tan} from "common-utils/dist/es2015/utils/Calculator";
Тем не менее, написаниеdist/es2015
каждый раз не идеален, и некоторые импортные материалы выглядят очень долго. Есть ли способ настроить модуль для разрешения наdist/es2015
каталог? Я не хочу вставлять переопределения внутри моего проекта, в идеале каждый модуль должен указывать, откуда разрешаются файлы.
Если вы все еще не уверены в том, что я спрашиваю (и я извиняюсь, если это сбивает с толку) в Jspm, когда вы создаете плагин / модуль для использования с Jspm, вы можете указать внутриpackage.json
для модуля что-то вроде следующего:
"jspm": {
"registry": "npm",
"jspmPackage": true,
"main": "my-module",
"format": "amd",
"directories": {
"dist": "dist/amd"
},
Я ищу эквивалент выше в TypeScript (если он существует). Директива сопоставления, поэтому, когда запускается конечный пользовательnpm install my-cool-package
и затем в своем приложении пытается что-то импортировать, все импорта по умолчанию разрешаются вcommonjs
каталог (приведенный выше пример для Jspm использует amd, но тот же посыл).
Это возможно, или я что-то здесь неправильно понимаю? Я знаю, что некоторые новые функции сопоставления путей были добавлены в последнюю версию, но документации по их использованию практически не существует.