Я хочу создать плагин newman в качестве npm package, а также использовать этот пакет в качестве библиотеки. У меня есть файл src/index.ts, который должен иметь этот экспорт для запуска
// in package newman-reporter-custom/index.ts
module.exports = function(newmanEventEmitter: any, reporterOptions: any, collectionRunOptions: any) {
...
};
У меня также есть этот бит в моем package.json: "main": "lib/index.js",
и "outDir": "lib",
в моем tsconfig.json.
Также я хочу экспортировать некоторые другие классы, чтобы использовать тот же пакет в качестве библиотеки.
// in package newman-reporter-custom/index.ts
import { foo } from "./foo";
export { foo };
Я также хочу экспортировать другие символы из этого index.ts, чтобы мне мог потребоваться проект как библиотека, например
// other npm package index.ts
import { foo } from "newman-reporter-custom";
Однако кажется, что в newman-reporter-custom/index.ts я могу сделать только одно из обоих: либо module.exports = function(...),
, либо export { foo };
.
Если я попробую что-то отдельно, все, кажется, работает нормально.
Если я попытаюсь сделать и то, и другое (по-разному), либо newman не сможет загрузить мой пакет с такими словами, как TypeError: Reporter is not a constructor
, либо я не смогу импортировать пакет как библиотеку с такими ошибками, как TypeError: Class extends value undefined is not a function or null
.
Мне кажется, что module.exports может быть либо функцией (конструктором), либо набором символов, но не тем и другим одновременно.
Итак, каков рабочий чистый способ как удовлетворить Ньюмана, так и обеспечить экспорт функции, а также экспортировать другие символы? Я гибкий в том, как я требую один пакет от другого.