У меня довольно большой проект A с использованием Node и Typescript. В проекте A у меня есть много разных модулей, которые я хотел бы повторно использовать в другом проекте B.
Поэтому я создал проект A с этим tsconfig.json:
{
"compilerOptions": {
"target": "es2017",
"module": "commonjs",
"declaration": true,
"outDir": "./dist",
"sourceMap": true,
"strict": true,
"noImplicitAny": true,
"strictNullChecks": true,
"typeRoots": ["./node_modules/@types", "./modules/@types"]
},
"exclude": ["node_modules"]
}
Итак, все файлы встраиваются в папку / dist следующим образом:
- dist
- moduleA.js
- moduleA.map
- модульA.d.ts
- модульB.js
- moduleB.map
- модульB.d.ts
- ….
Чтобы использовать эти moduleA и moduleB в другом проекте, я добавляю следующее в package.json в Project A:
"name": "projectA",
"version": "1.0.0",
"description": "...",
"main": "dist/moduleA.js",
"typings": "dist/moduleA.d.ts",
Я использую рабочие области пряжи для доступа к Project A как к пакету в Project B. Но проблема в том, что я могу получить доступ только к moduleA, когда использую import {ModuleA} from 'projectA'
в моем новом проекте B? Итак, как я могу получить доступ к дополнительным модулям из ProjectA?
Поможет ли вам простая консолидация всего экспорта в один
index.ts
?package.json (проектA):
index.ts (projectA):
Некоторый модуль в проектеB:
см. также этот ответ: stackoverflow.com/questions / 34072598 / — person Jolle; 17.08.2019
Это не отвечает на вопрос. Что делать, если вы не хотите включать модули или хотите иметь дело с большим размером файла? — person Jolle; 01.06.2020
Я считаю, что вы ищете: https://nodejs.org/api/packages.html#packages_package_entry_points
Неясно, поддерживает ли его в настоящее время TypeScript или нет: https://github.com/microsoft/TypeScript/issues/33079
Похоже, вы можете обойти это, хотя в вашем package.json есть что-то вроде этого: