Для этого есть два подхода.
Установка в node_modules
В этом случае мы хотим установить библиотеку в node_modules
Потребитель и использование Node module resolution
.
Конфигурация Node module resolution
означает, что компилятор TypeScript ищет каталог node_modules
в вашей рабочей области, и если в нем есть экспортированный код, который соответствует вашему оператору импорта, тогда он сможет решить это с помощью короткого оператора импорта. Вы можете найти подробности об этом здесь .
Если ваша библиотека опубликована и развернута в реестре (например, https://registry.npmjs.org/ или в хранилище Artifactory et c.) Затем добавьте развернутую библиотеку к package.json
потребителя в качестве зависимости и установите ее с помощью npm install
. На этом этапе библиотека будет установлена в node_modules
, и если в tsconfig.json
настроены параметры компилятора Node module resolution
, то компилятор TypesSript сможет разрешить краткий оператор импорта.
Этот подход предполагает, что у вас есть библиотека, развернутая в реестре. Если ваша библиотека только локальная, то CLI install-local может помочь вам установить библиотеку в node_modules
локально без какого-либо развертывания. Но этому есть альтернатива, поэтому смотрите следующий раздел.
Ссылка на опубликованный источник напрямую из dist
В tsconfig.json
пользовательского проекта вы можете указать свои локально опубликованные модули в paths
из compilerOptions
настройки (см. Подробнее опции компилятора ). Таким образом, компилятор TypeScript также разрешит зависимости от настроенных путей. Следовательно, вам не нужно устанавливать вашу зависимость в node_modules
, чтобы использовать короткий оператор импорта, компилятор найдет их по настроенным путям.
Допустим, у меня есть библиотека с именем my-lib
. Папка dist
выглядит следующим образом:
dist
-->my-lib
---->{all the published files of my-lib}
-->my-app
---->{all the published files of my-app}
В этом случае пример tsconfig.json
потребителя выглядит так:
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"module": "es2015",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2018",
"dom"
],
"paths": {
"my-lib": [
"dist/my-lib"
],
"my-lib/*": [
"dist/my-lib/*"
]
}
}
}
Выше в paths
оба my-lib
и my-lib/*
необходимы. my-lib
- это то, что можно использовать в кратком операторе импорта, например, следующим образом:
import { MyLibModule } from 'my-lib';
Пути после этих записей в tsconfig указывают на опубликованную библиотеку в dist
.
Насколько я знаю, экспорт должен быть сделан вручную в index.ts
пакета.