Wie verhindere ich, dass babel 'this' in 'undefined' transpiliert (und "use strict" einfügt)

BEARBEITE: Das istnicht über dicke Pfeile. Es geht auch nicht darum, @ zu überholDie zu einem IIFE. Es ist eine transpilerbezogene Frage.

So habe ich ein einfaches Pub-Sub für eine kleine App erstellt, an der ich arbeite. Ich habe es in ES6 geschrieben, um Spread / Rest zu verwenden und ein paar Kopfschmerzen zu sparen. Ich habe es mit npm und gulp eingerichtet, um es zu transpilieren, aber es macht mich verrückt.

Ich habe es zu einer Browser-Bibliothek gemacht, aber festgestellt, dass es überall verwendet werden kann. Deshalb habe ich beschlossen, es Commonjs- und AMD-kompatibel zu machen.

Hier ist eine verkleinerte Version meines Codes:

(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
});

Aber egal was ich versuche (wie @ machDie eine Variable und Übergabe) setzt es aufnicht definier.

}(undefined, function() {

Es hat wahrscheinlich etwas damit zu tun, dass Babel nicht weiß, wasDie wird und transpiliert es weg, aber gibt es einen anderen Ansatz, den ich nehmen kann?

AKTUALISIERE: Vorbeigehen}((window || module || {}), function() { Anstatt vonDie scheint zu funktionieren. Ich bin mir nicht sicher, ob dies der beste Ansatz ist.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage