[webpackShims] support contextual module overrides in the webpack build

This commit is contained in:
spalger 2015-08-17 21:36:31 -07:00
parent 184069c706
commit e1b395004c
17 changed files with 13 additions and 38 deletions

View file

@ -131,7 +131,7 @@ class BaseOptimizer {
resolve: {
extensions: ['.babel.js', '.js', '.less', ''],
postfixes: [''],
modulesDirectories: ['node_modules'],
modulesDirectories: ['webpackShims', 'node_modules'],
loaderPostfixes: ['-loader', ''],
root: fromRoot('.'),
alias: this.env.aliases,

View file

@ -1,28 +0,0 @@
module.exports = function (kibana) {
let _ = require('lodash');
let fromRoot = require('../../utils/fromRoot');
let { readdirSync } = require('fs');
let { resolve, basename } = require('path');
let modules = {
moment$: fromRoot('node_modules/moment/min/moment.min.js')
};
let metaLibs = resolve(__dirname, 'metaLibs');
readdirSync(metaLibs).forEach(function (file) {
if (file[0] === '.') return;
let name = basename(file, '.js') + '$';
modules[name] = resolve(metaLibs, file);
});
return new kibana.Plugin({
init: false,
uiExports: {
modules: modules,
noParse: [
/node_modules[\/\\](angular|elasticsearch-browser)[\/\\]/,
/node_modules[\/\\](angular-nvd3|mocha|moment)[\/\\]/
]
}
});
};

View file

@ -1,4 +0,0 @@
{
"name": "bundledLibs",
"version": "1.0.0"
}

View file

@ -38,7 +38,10 @@ module.exports = class UiBundlerEnv {
this.pluginInfo = [];
// regular expressions which will prevent webpack from parsing the file
this.noParse = [];
this.noParse = [
/node_modules[\/\\](angular|elasticsearch-browser)[\/\\]/,
/node_modules[\/\\](angular-nvd3|mocha|moment)[\/\\]/
];
// webpack aliases, like require paths, mapping a prefix to a directory
this.aliases = {

1
webpackShims/moment.js Normal file
View file

@ -0,0 +1 @@
module.exports = require('../node_modules/moment/min/moment.min.js');

4
webpackShims/ng-clip.js Normal file
View file

@ -0,0 +1,4 @@
require('angular');
require('zeroclipboard');
require('node_modules/ng-clip/src/ngClip');
require('ui/modules').get('kibana', ['ngClipboard']);

View file

@ -1,10 +1,9 @@
require('angular');
// ng-clip expects ZeroClipboard to be global, but it's UMD, so it never is
window.ZeroClipboard = require('node_modules/zeroclipboard/dist/ZeroClipboard.js');
window.ZeroClipboard.SWF_URL = require('file!node_modules/zeroclipboard/dist/ZeroClipboard.swf');
require('node_modules/ng-clip/src/ngClip');
require('ui/modules').get('kibana', ['ngClipboard']);
window.ZeroClipboard.config({
swfPath: window.ZeroClipboard.SWF_URL,
});
module.exports = window.ZeroClipboard;