refactor common bundle to ES module syntax and move global exports to application.js

This commit is contained in:
Mike Greiling 2017-03-01 17:02:01 -06:00
parent cb6c036d89
commit 7371f6cd8c
5 changed files with 49 additions and 32 deletions

View file

@ -6,14 +6,29 @@
/* global AwardsHandler */ /* global AwardsHandler */
/* global Aside */ /* global Aside */
// common libraries import jQuery from 'jquery';
window.Cookies = require('js-cookie'); import _ from 'underscore';
window.Pikaday = require('pikaday'); import Cookies from 'js-cookie';
window._ = require('underscore'); import Pikaday from 'pikaday';
window.Dropzone = require('dropzone'); import Dropzone from 'dropzone';
window.Sortable = require('vendor/Sortable'); import Sortable from 'vendor/Sortable';
// libraries with import side-effects
require('mousetrap'); require('mousetrap');
require('mousetrap/plugins/pause/mousetrap-pause'); require('mousetrap/plugins/pause/mousetrap-pause');
require('vendor/fuzzaldrin-plus');
require('es6-promise').polyfill();
// expose common libraries as globals (TODO: remove these)
window.jQuery = jQuery;
window.$ = jQuery;
window._ = _;
window.Cookies = Cookies;
window.Pikaday = Pikaday;
window.Dropzone = Dropzone;
window.Sortable = Sortable;
// shortcuts
require('./shortcuts'); require('./shortcuts');
require('./shortcuts_navigation'); require('./shortcuts_navigation');
require('./shortcuts_dashboard_navigation'); require('./shortcuts_dashboard_navigation');
@ -189,9 +204,6 @@ require('./visibility_select');
require('./wikis'); require('./wikis');
require('./zen_mode'); require('./zen_mode');
require('vendor/fuzzaldrin-plus');
require('es6-promise').polyfill();
(function () { (function () {
document.addEventListener('beforeunload', function () { document.addEventListener('beforeunload', function () {
// Unbind scroll events // Unbind scroll events
@ -269,7 +281,7 @@ require('es6-promise').polyfill();
$.fn.tooltip.Constructor.DEFAULTS.trigger = 'hover'; $.fn.tooltip.Constructor.DEFAULTS.trigger = 'hover';
$body.tooltip({ $body.tooltip({
selector: '.has-tooltip, [data-toggle="tooltip"]', selector: '.has-tooltip, [data-toggle="tooltip"]',
placement: function (_, el) { placement: function (tip, el) {
return $(el).data('placement') || 'bottom'; return $(el).data('placement') || 'bottom';
} }
}); });

View file

@ -1,10 +1,10 @@
require('./jquery'); import 'jquery';
// twitter bootstrap plugins // bootstrap jQuery plugins
require('bootstrap-sass/assets/javascripts/bootstrap/affix'); import 'bootstrap-sass/assets/javascripts/bootstrap/affix';
require('bootstrap-sass/assets/javascripts/bootstrap/alert'); import 'bootstrap-sass/assets/javascripts/bootstrap/alert';
require('bootstrap-sass/assets/javascripts/bootstrap/dropdown'); import 'bootstrap-sass/assets/javascripts/bootstrap/dropdown';
require('bootstrap-sass/assets/javascripts/bootstrap/modal'); import 'bootstrap-sass/assets/javascripts/bootstrap/modal';
require('bootstrap-sass/assets/javascripts/bootstrap/tab'); import 'bootstrap-sass/assets/javascripts/bootstrap/tab';
require('bootstrap-sass/assets/javascripts/bootstrap/transition'); import 'bootstrap-sass/assets/javascripts/bootstrap/transition';
require('bootstrap-sass/assets/javascripts/bootstrap/tooltip'); import 'bootstrap-sass/assets/javascripts/bootstrap/tooltip';

View file

@ -1,2 +1,2 @@
require('./jquery'); import './jquery';
require('./bootstrap'); import './bootstrap';

View file

@ -1,12 +1,11 @@
// jQuery library import 'jquery';
window.$ = window.jQuery = require('jquery');
// jQuery plugins // common jQuery plugins
require('jquery-ujs'); import 'jquery-ujs';
require('vendor/jquery.endless-scroll'); import 'vendor/jquery.endless-scroll';
require('vendor/jquery.caret'); import 'vendor/jquery.caret';
require('vendor/jquery.atwho'); import 'vendor/jquery.atwho';
require('vendor/jquery.scrollTo'); import 'vendor/jquery.scrollTo';
require('vendor/jquery.nicescroll'); import 'vendor/jquery.nicescroll';
require('vendor/jquery.waitforimages'); import 'vendor/jquery.waitforimages';
require('select2/select2.js'); import 'select2/select2';

View file

@ -87,6 +87,12 @@ var config = {
// prevent pikaday from including moment.js // prevent pikaday from including moment.js
new webpack.IgnorePlugin(/moment/, /pikaday/), new webpack.IgnorePlugin(/moment/, /pikaday/),
// fix legacy jQuery plugins which depend on globals
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
}),
// use deterministic module ids in all environments // use deterministic module ids in all environments
IS_PRODUCTION ? IS_PRODUCTION ?
new webpack.HashedModuleIdsPlugin() : new webpack.HashedModuleIdsPlugin() :