Как не дать Babel перевести «this» в «undefined» (и вставить «use strict»)

РЕДАКТИРОВАТЬ: Этоне о толстых стрелах, Это также не про прохождениеэтот дляIIFE, Это вопрос, связанный с транспортом.

Итак, я создал простой паб-саб для небольшого приложения, над которым я работаю. Я написал это в ES6, чтобы использовать распространение / отдых и сохранить некоторые головные боли. Я настроил это с помощью npm и глотнул, чтобы пропустить это, но это сводит меня с ума.

Я сделал это браузерной библиотекой, но понял, что ее можно использовать где угодно, поэтому решил совместить ее с Commonjs и AMD.

Вот урезанная версия моего кода:

(function(root, factory) {
 if(typeof define === 'function' && define.amd) {
    define([], function() {
        return (root.simplePubSub = factory())
    });
  } else if(typeof module === 'object' && module.exports) {
    module.exports = (root.simplePubSub = factory())
  } else {
    root.simplePubSub = root.SPS = factory()
  }
}(this, function() {
 // return SimplePubSub
});

Но независимо от того, что я пытаюсь (например, сделатьэтот переменная и передавая его) он устанавливает егоне определено.

}(undefined, function() {

Наверное, это как-то связано с тем, что Бабель не знает, чтоэтот будет и переносить это прочь, но есть ли другой подход, который я могу предпринять?

ОБНОВИТЬ: Прохождение}((window || module || {}), function() { вместоэтот похоже на работу. Я не уверен, что это лучший подход.

Ответы на вопрос(2)

Ваш ответ на вопрос