I found a great post that explains the whole process.
http://ifandelse.com/its-not-hard-making-your-library-support-amd-and-commonjs/
In a nutshell, the author proposed the following template:
** Here postal.js is an AMD / Commonjs compatible module.
(function (root, factory) { if(typeof define === "function" && define.amd) { // Now we're wrapping the factory and assigning the return // value to the root (window) and returning it as well to // the AMD loader. define(["postal"], function(postal){ return (root.myModule = factory(postal)); }); } else if(typeof module === "object" && module.exports) { // I've not encountered a need for this yet, since I haven't // run into a scenario where plain modules depend on CommonJS // *and* I happen to be loading in a CJS browser environment // but I'm including it for the sake of being thorough module.exports = (root.myModule = factory(require("postal"))); } else { //node.js diverges from the CommonJS spec a bit by using module. So, to use it in other common js environments root.myModule = factory(root.postal);}}(this, function(postal) {//passing this as the root argument, and our module method from earlier as the factory argument. If we run this in the browser, this, will be the window. var sub; var ch = postal.channel("myModule"); var myModule = { sayHi:function() { ch.publish("hey.yall", { msg: "myModule sez hai" }); }, dispose: function() { sub.unsubscribe(); }};return myModule;}));
sudip source share