webpack 2

This commit is contained in:
Lyubo Marinov 2017-01-30 12:45:08 -06:00 committed by hristoterezov
parent 2db574810b
commit f200b17a33
2 changed files with 47 additions and 34 deletions

View File

@ -84,16 +84,14 @@
"expose-loader": "0.7.3",
"file-loader": "0.11.1",
"flow-bin": "0.38.0",
"haste-resolver-webpack-plugin": "0.2.2",
"imports-loader": "0.7.1",
"jshint": "2.9.4",
"json-loader": "0.5.4",
"node-sass": "3.13.1",
"precommit-hook": "3.0.0",
"string-replace-loader": "1.2.0",
"style-loader": "0.18.1",
"webpack": "1.14.0",
"webpack-dev-server": "1.16.3"
"webpack": "2.6.1",
"webpack-dev-server": "2.4.5"
},
"license": "Apache-2.0",
"scripts": {

View File

@ -1,6 +1,5 @@
/* global __dirname */
const HasteResolverPlugin = require('haste-resolver-webpack-plugin');
const process = require('process');
const webpack = require('webpack');
@ -18,7 +17,10 @@ const minimize
|| process.argv.indexOf('--optimize-minimize') !== -1;
const node_modules = __dirname + '/node_modules/';
const plugins = [
new HasteResolverPlugin()
new webpack.LoaderOptionsPlugin({
debug: !minimize,
minimize: minimize
})
];
const strophe = /\/node_modules\/strophe(js-plugins)?\/.*\.js$/;
@ -43,6 +45,7 @@ if (minimize) {
// webpack 2.
warnings: true
},
extractComments: true,
// Use the source map to map error message locations to modules. The
// default is false in webpack 2.
@ -66,22 +69,28 @@ const config = {
},
devtool: 'source-map',
module: {
loaders: [ {
rules: [ {
// Transpile ES2015 (aka ES6) to ES5. Accept the JSX syntax by React
// as well.
exclude: node_modules,
loader: 'babel-loader',
query: {
options: {
// XXX The require.resolve bellow solves failures to locate the
// presets when lib-jitsi-meet, for example, is npm linked in
// jitsi-meet. The require.resolve, of course, mandates the use
// of the prefix babel-preset- in the preset names.
presets: [
'babel-preset-es2015',
'babel-preset-react',
'babel-preset-stage-1'
].map(require.resolve)
[
require.resolve('babel-preset-es2015'),
// Tell babel to avoid compiling imports into CommonJS
// so that webpack may do tree shaking.
{ modules: false }
],
require.resolve('babel-preset-react'),
require.resolve('babel-preset-stage-1')
]
},
test: /\.jsx?$/
}, {
@ -105,28 +114,22 @@ const config = {
}, {
// Allow CSS to be imported into JavaScript.
loaders: [
test: /\.css$/,
use: [
'style-loader',
'css-loader'
],
test: /\.css$/
]
}, {
// Emit the static assets of AUI such as images that are referenced
// by CSS into the output path.
include: aui_css,
loader: 'file-loader',
query: {
options: {
context: aui_css,
name: '[path][name].[ext]'
},
test: /\.(gif|png|svg)$/
}, {
// Enable the import of JSON files.
loader: 'json-loader',
exclude: node_modules,
test: /\.json$/
} ],
noParse: [
@ -154,7 +157,20 @@ const config = {
alias: {
jquery: 'jquery/dist/jquery' + (minimize ? '.min' : '') + '.js'
},
packageAlias: 'browser'
aliasFields: [
'browser'
],
extensions: [
// Webpack 2 broke haste-resolver-webpack-plugin and I could not fix
// it. But given that there is resolve.extensions and the only
// non-default extension we have is .web.js, drop
// haste-resolver-webpack-plugin and go with resolve.extensions.
'.web.js',
// Webpack defaults:
'.js',
'.json'
]
}
};
@ -164,7 +180,7 @@ const configs = [
Object.assign({}, config, {
entry: {
'app.bundle': [
// XXX Requried by at least IE11 at the time of this writing.
// XXX Required by at least IE11 at the time of this writing.
'babel-polyfill',
'./app.js'
]
@ -174,6 +190,15 @@ const configs = [
})
}),
// The Webpack configuration to bundle device_selection_popup_bundle.js
// (i.e. js file for the device selection popup dialog).
Object.assign({}, config, {
entry: {
'device_selection_popup_bundle':
'./react/features/device-selection/popup.js'
}
}),
// The Webpack configuration to bundle do_external_connect.js (which
// attempts to optimize Jitsi Meet's XMPP connection and, consequently, is
// also known as HTTP pre-bind).
@ -193,16 +218,6 @@ const configs = [
output: Object.assign({}, config.output, {
library: 'JitsiMeetExternalAPI'
})
}),
// The Webpack configuration to bundle popup_bundle.js (js file for the
// device selection popup dialog).
Object.assign({}, config, {
entry: {
'device_selection_popup_bundle':
'./react/features/device-selection/popup.js'
},
output: config.output
})
];