diff --git a/lib/amd/build/pubsub.min.js b/lib/amd/build/pubsub.min.js
new file mode 100644
index 00000000000..871bb59c16d
--- /dev/null
+++ b/lib/amd/build/pubsub.min.js
@@ -0,0 +1 @@
+define([],function(){var a={},b=function(b,c){a[b]=a[b]||[],a[b].push(c)},c=function(b,c){if(a[b])for(var d=0;d.
+
+/**
+ * A simple Javascript PubSub implementation.
+ *
+ * @module core/pubsub
+ * @copyright 2018 Ryan Wyllie
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+define([], function() {
+
+ var events = {};
+
+ /**
+ * Subscribe to an event.
+ *
+ * @param {string} eventName The name of the event to subscribe to.
+ * @param {function} callback The callback function to run when eventName occurs.
+ */
+ var subscribe = function(eventName, callback) {
+ events[eventName] = events[eventName] || [];
+ events[eventName].push(callback);
+ };
+
+ /**
+ * Unsubscribe from an event.
+ *
+ * @param {string} eventName The name of the event to unsubscribe from.
+ * @param {function} callback The callback to unsubscribe.
+ */
+ var unsubscribe = function(eventName, callback) {
+ if (events[eventName]) {
+ for (var i = 0; i < events[eventName].length; i++) {
+ if (events[eventName][i] === callback) {
+ events[eventName].splice(i, 1);
+ break;
+ }
+ }
+ }
+ };
+
+ /**
+ * Publish an event to all subscribers.
+ *
+ * @param {string} eventName The name of the event to publish.
+ * @param {any} data The data to provide to the subscribed callbacks.
+ */
+ var publish = function(eventName, data) {
+ if (events[eventName]) {
+ events[eventName].forEach(function(callback) {
+ callback(data);
+ });
+ }
+ };
+
+ return {
+ subscribe: subscribe,
+ unsubscribe: unsubscribe,
+ publish: publish
+ };
+});