diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Changelog
 
+#### 0.16.1.2
+
+* JavaScript: Add support for webpack (and any other preprocessor that tries to import all `require` function calls)
+
 #### 0.16.1.1
 
 * Haskell: Fixes a bug where client generation for end points without defined output or errors would default to parsing errors as XML even though the accept header was text/json. It now parses the response as json.
diff --git a/files/Javascript/base.js b/files/Javascript/base.js
--- a/files/Javascript/base.js
+++ b/files/Javascript/base.js
@@ -1,5 +1,15 @@
-var isNodeJs = typeof module === "object" && module && typeof module.exports === "object";
+// in nodejs, global is an object
+// in normal browser environment, global is undefined
+// in webpack, global is set to window
+var isNodeJs   = typeof global !== "undefined" && global.window === undefined;
+var isCommonJs = typeof module === "object" && module && typeof module.exports === "object";
 
+// require, that the nodejs will handle, but will remain not processed by webpack and the like
+var obfuscatedRequire = function (moduleName)
+{
+  return module["r" + "equire"](moduleName);
+}
+
 var $apinamespace$ =
   function (url, secureUrl, modifyRequest)
   {
@@ -8,11 +18,11 @@
     var contextUrl       = url + postfix;
     var secureContextUrl = (secureUrl || url.replace(/^http:/, "https:")) + postfix;
 
-    this.cookieJar = isNodeJs ? require('request').jar() : undefined;
+    this.cookieJar = isNodeJs ? obfuscatedRequire('request').jar() : undefined;
 
-    if(!modifyRequest) modifyRequest = function(req) { return req; };
+    if(!modifyRequest) modifyRequest = function (req) { return req; };
 
-    var finalModifyRequest = function(req)
+    var finalModifyRequest = function (req)
     {
       if (isNodeJs) req.jar = self.cookieJar;
       return modifyRequest(req);
@@ -21,6 +31,7 @@
     $apinamespace$.setContext(this, contextUrl, secureContextUrl, finalModifyRequest);
   };
 
+var jqFun;
 if (isNodeJs)
 {
   // Export as Node module.
@@ -30,13 +41,19 @@
 }
 else
 {
-  if (typeof define === "function" && define.amd)
+  if (isCommonJs) {
+    // Export as CommonJs
+    module.exports = $apinamespace$;
+    jqFun = function () { return require("jquery"); };
+  } else if (typeof define === "function" && define.amd) {
     // Export as AMD.
     define("$apinamespace$", [], function () { return $apinamespace$; });
-
-  else
+    jqFun = function () { return window.$dollar$; };
+  } else {
     // Export as global.
     window.$apinamespace$ = $apinamespace$;
+    jqFun = function () { return window.$dollar$; };
+  }
 
   $apinamespace$.ajaxCall = jQueryRequest;
 }
@@ -53,13 +70,14 @@
 function jQueryRequest (method, url, params, success, error, contentType, acceptHeader, data, callOpts, modifyRequest)
 {
   var q = window.Q || function (a) { return a };
+  var jq = jqFun();
 
-  var headers = $dollar$.extend(true, {}, $apinamespace$.defaultHeaders);
+  var headers = jq.extend(true, {}, $apinamespace$.defaultHeaders);
   $apinamespace$.addObject(headers, { Accept : acceptHeader });
 
   var callData =
     { type        : method
-    , url         : url + (params ? '?' + $dollar$.param(params) : '')
+    , url         : url + (params ? '?' + jq.param(params) : '')
     , cache       : false
     , success     : success || function () {}
     , error       : error || function () {}
@@ -74,7 +92,7 @@
   $apinamespace$.addObject(callData, $apinamespace$.defaultAjaxOptions);
   $apinamespace$.addObject(callData, callOpts);
 
-  return q($dollar$.ajax(callData));
+  return q(jq.ajax(callData));
 }
 
 function nodeRequest (method, url, params, onSuccess, onError, contentType, acceptHeader, data, callOpts, modifyRequest)
@@ -108,7 +126,7 @@
 
   return require("q").Promise(function (resolve, reject)
   {
-    require("request")(callData, callback);
+    obfuscatedRequire("request")(callData, callback);
 
     function callback (error, message, body)
     {
diff --git a/rest-gen.cabal b/rest-gen.cabal
--- a/rest-gen.cabal
+++ b/rest-gen.cabal
@@ -1,5 +1,5 @@
 name:                rest-gen
-version:             0.16.1.1
+version:             0.16.1.2
 description:         Documentation and client generation from rest definition.
 synopsis:            Documentation and client generation from rest definition.
 maintainer:          code@silk.co
