diff --git a/js/affix.js b/js/affix.js
index 270b039bf10d806ddc878633d1062549e443c56f..fc91936fbda6744982dd42010c8adc21d0aa686f 100644
--- a/js/affix.js
+++ b/js/affix.js
@@ -27,7 +27,9 @@
     this.checkPosition()
   }
 
-  Affix.RESET = 'affix affix-top affix-bottom'
+  Affix.VERSION  = '3.1.1'
+
+  Affix.RESET    = 'affix affix-top affix-bottom'
 
   Affix.DEFAULTS = {
     offset: 0
diff --git a/js/alert.js b/js/alert.js
index ee2bd02e1570fe576a7dfa27f912cbb9576cc1f7..905aacc150f73fdb06c2c1aecba3bea5a7eeb2d1 100644
--- a/js/alert.js
+++ b/js/alert.js
@@ -18,6 +18,8 @@
     $(el).on('click', dismiss, this.close)
   }
 
+  Alert.VERSION = '3.1.1'
+
   Alert.prototype.close = function (e) {
     var $this    = $(this)
     var selector = $this.attr('data-target')
diff --git a/js/button.js b/js/button.js
index bbce6690e83dfcde4fc632f3f951e6cc9a39df3b..aa714507228906a7628fa3b0fbe55e7ec1af0623 100644
--- a/js/button.js
+++ b/js/button.js
@@ -19,6 +19,8 @@
     this.isLoading = false
   }
 
+  Button.VERSION  = '3.1.1'
+
   Button.DEFAULTS = {
     loadingText: 'loading...'
   }
diff --git a/js/carousel.js b/js/carousel.js
index 2beae55e11c91a2ad9de9cff33d67ce1346a66a4..2a94a98382a368da4a1954e754bdc7582b75c49f 100644
--- a/js/carousel.js
+++ b/js/carousel.js
@@ -28,6 +28,8 @@
       .on('mouseleave', $.proxy(this.cycle, this))
   }
 
+  Carousel.VERSION  = '3.1.1'
+
   Carousel.DEFAULTS = {
     interval: 5000,
     pause: 'hover',
diff --git a/js/collapse.js b/js/collapse.js
index 4ff5544c571b0bed365f32471cb6c4256c43b9a6..8d6e3328901776e7fdb83684b5b086219624e689 100644
--- a/js/collapse.js
+++ b/js/collapse.js
@@ -22,6 +22,8 @@
     if (this.options.toggle) this.toggle()
   }
 
+  Collapse.VERSION  = '3.1.1'
+
   Collapse.DEFAULTS = {
     toggle: true
   }
diff --git a/js/dropdown.js b/js/dropdown.js
index 1c24858ddd3165544e80123d8ca80e4376e1fa97..bc671fef010a8ad9fd5746c080473dfdc6e22c99 100644
--- a/js/dropdown.js
+++ b/js/dropdown.js
@@ -19,6 +19,8 @@
     $(element).on('click.bs.dropdown', this.toggle)
   }
 
+  Dropdown.VERSION = '3.1.1'
+
   Dropdown.prototype.toggle = function (e) {
     var $this = $(this)
 
diff --git a/js/modal.js b/js/modal.js
index ae1b8e5980a5bd8420d37bd4865161d16694581b..109f66d7d26dea07a746d9c4dc83e0c552d71e9a 100644
--- a/js/modal.js
+++ b/js/modal.js
@@ -30,6 +30,8 @@
     }
   }
 
+  Modal.VERSION  = '3.1.1'
+
   Modal.DEFAULTS = {
     backdrop: true,
     keyboard: true,
diff --git a/js/popover.js b/js/popover.js
index 9fff89320cffb3e18e89cdb8f7fc980755cf9ed7..ea76720b89ce4fb18913ae15282cdfc357007225 100644
--- a/js/popover.js
+++ b/js/popover.js
@@ -19,6 +19,8 @@
 
   if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
 
+  Popover.VERSION  = '3.1.1'
+
   Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
     placement: 'right',
     trigger: 'click',
diff --git a/js/scrollspy.js b/js/scrollspy.js
index 4ba733e787062b39b2ecd7afaa793ba5f11273a1..74e016dc9f07e24da7c49ebf3a062e0b93545db4 100644
--- a/js/scrollspy.js
+++ b/js/scrollspy.js
@@ -32,6 +32,8 @@
     this.process()
   }
 
+  ScrollSpy.VERSION  = '3.1.1'
+
   ScrollSpy.DEFAULTS = {
     offset: 10
   }
diff --git a/js/tab.js b/js/tab.js
index 5a6b6a331809fa457c091f5c48db89a055a202ae..0078453c54be20a4d2a5915976408c34d4821260 100644
--- a/js/tab.js
+++ b/js/tab.js
@@ -17,6 +17,8 @@
     this.element = $(element)
   }
 
+  Tab.VERSION = '3.1.1'
+
   Tab.prototype.show = function () {
     var $this    = this.element
     var $ul      = $this.closest('ul:not(.dropdown-menu)')
diff --git a/js/tooltip.js b/js/tooltip.js
index f688b30209230945844c74daf6bacdf744222815..d985f96e346583d7ca825a808d69d28fbd43a3a4 100644
--- a/js/tooltip.js
+++ b/js/tooltip.js
@@ -25,6 +25,8 @@
     this.init('tooltip', element, options)
   }
 
+  Tooltip.VERSION  = '3.1.1'
+
   Tooltip.DEFAULTS = {
     animation: true,
     placement: 'top',