Я пишу корпоративный пакет npm (в машинописном тексте) и портирую в него существующий код.В существующем коде есть несколько операторов console.log
, console.warn
и console.error
.Вот так:
try {
const foo = getFoo("bar");
return callback(undefined, foo);
} catch (e) {
console.error(e);
return cb(new httpErrors.BadRequest("Some message"));
}
Итак, что происходит:
- зарегистрировать ошибку
- вызвать обратный вызов с другой ошибкой, не передавая исходную ошибку
Это поведение, которое мы хотим, так как мы не хотим возвращать исходное сообщение об ошибке, но мы хотим, чтобы оно было в наших журналах.
Теперь, когда я перехожу кпакет, я хочу применить некоторые передовые практики и удалить вызовы console
.Это правило tslint, и я согласен с тем, что автору пакета не нужно заполнять журналы пользователя пакета.
Так что будет лучшим подходом здесь?
Я читал о пакете debug
, но это только для целей разработки.Кроме того, это означало бы, что у нас не будет наших сообщений журнала, если мы не установим DEBUG=...
Мне интересно, если использование синглтона EventEmitter
в моем пакете является вариантом.Но опять же, синглтон считается антипаттерном.
И я не хочу добавлять библиотеку журналов в качестве зависимости, потому что, как автор пакета, я не могу сказать, какую библиотеку журналов использовать..
Последний вариант, о котором я подумал, - разрешить передачу функции ведения журнала, которую я затем могу вызвать, но мне это кажется немного неприятным.
Так что же является предпочтительным методомразрешить запись сообщений из библиотеки (TypeScript / npm)?
(Если он вообще есть; я довольно новичок в экосистеме Node / TypeScript).