Исходя из предположения, что Something
должен быть синглтоном, вот как я бы это сделал:
const _inst = null;
const _init = options => {
if (!_inst) {
_inst = new Something(options);
}
return _inst;
}
class Something {
constructor(options) {
}
method() {
}
}
module.exports = _init;
Первое включение something
создаст экземпляр, а затем последующие вызовы (независимо от того, будут ли переданы параметры) всегда будут возвращать один и тот же экземпляр.
Только предостережение, и это немного отличается от вашего желаемого использования, это потребует от вас вызова функции оба раза, т.е.
// First use
const something1 = require ('./something')(options);
// All subsequent uses
const something2 = require ('./something')();
Существует также множество других способов сделать это, то есть многократный экспорт, но приведенный выше, вероятно, наиболее близок к синтаксису, который вам нужен. Если бы у вас был доступ к синтаксису import
(который вы могли бы через Babel), то множественный импорт, вероятно, был бы более точным способом, то есть экспортировать функцию init
и сам экземпляр.