Clean up webpack config (#5157)

* Make “dev” and “release” more consistent in web pack config

* Consolidate dev and release webpack configs
This commit is contained in:
Shane McDonald
2017-02-03 12:19:29 -05:00
committed by GitHub
parent 9993c5d5fd
commit 691248c579

View File

@@ -44,115 +44,75 @@ var vendorPkgs = [
'reconnectingwebsocket' 'reconnectingwebsocket'
]; ];
var dev = { var baseConfig = function() {
entry: { return {
app: './client/src/app.js', entry: {
vendor: vendorPkgs app: './client/src/app.js',
}, vendor: vendorPkgs
output: { },
path: './static/', output: {
filename: 'tower.js' path: './static/',
}, filename: 'tower.js'
plugins: [ },
// vendor shims: plugins: [
// [{expected_local_var : dependency}, ...] // vendor shims:
new webpack.ProvidePlugin({ // [{expected_local_var : dependency}, ...]
'$': 'jquery', new webpack.ProvidePlugin({
'jQuery': 'jquery', '$': 'jquery',
'window.jQuery': 'jquery', 'jQuery': 'jquery',
'_': 'lodash', 'window.jQuery': 'jquery',
'CodeMirror': 'codemirror', '_': 'lodash',
'jsyaml': 'js-yaml', 'CodeMirror': 'codemirror',
'jsonlint': 'codemirror.jsonlint', 'jsyaml': 'js-yaml',
}), 'jsonlint': 'codemirror.jsonlint'
// (chunkName, outfileName) }),
new webpack.optimize.CommonsChunkPlugin('vendor', 'tower.vendor.js'), new webpack.optimize.CommonsChunkPlugin('vendor', 'tower.vendor.js')
new webpack.DefinePlugin({ $ENV: JSON.stringify(awx_env) }) ],
], module: {
module: { loaders: [{
preLoaders: [{ // disable AMD loading (broken in this lib) and default to CommonJS (not broken)
test: /\.js?$/, test: /\.angular-tz-extensions.js$/,
loader: 'jshint-loader', loader: 'imports?define=>false'
exclude: ['/(node_modules)/'], }, {
include: [path.resolve() + '/client/src/'], // es6 -> es5
jshint: { test: /\.js$/,
emitErrors: true loader: 'babel-loader',
exclude: /(node_modules)/,
query: {
presets: ['es2015']
}
}]
},
resolve: {
alias: {
'codemirror.jsonlint': path.resolve() + '/node_modules/codemirror/addon/lint/json-lint.js',
'jquery.resize': path.resolve() + '/node_modules/javascript-detect-element-resize/jquery.resize.js',
'select2': path.resolve() + '/node_modules/select2/dist/js/select2.full.js'
} }
}],
loaders: [{
// disable AMD loading (broken in this lib) and default to CommonJS (not broken)
test: /\.angular-tz-extensions.js$/,
loader: 'imports?define=>false'
}, {
// es6 -> es5
test: /\.js$/,
loader: 'babel-loader',
exclude: /(node_modules)/,
query: {
presets: ['es2015']
}
}]
},
resolve: {
alias: {
'codemirror.jsonlint': path.resolve() + '/node_modules/codemirror/addon/lint/json-lint.js',
'jquery.resize': path.resolve() + '/node_modules/javascript-detect-element-resize/jquery.resize.js',
'select2': path.resolve() + '/node_modules/select2/dist/js/select2.full.js'
} }
}, };
devtool: 'inline-source-map',
watch: true,
}; };
var release = { var dev = baseConfig();
entry: {
app: './client/src/app.js', dev.devtool = 'inline-source-map';
vendor: vendorPkgs dev.watch = true;
}, dev.plugins.push(new webpack.DefinePlugin({ $ENV: JSON.stringify(awx_env) }));
output: { dev.module.preLoaders = [
path: './static/', {
filename: 'tower.js' test: /\.js?$/,
}, loader: 'jshint-loader',
plugins: [ exclude: ['/(node_modules)/'],
// vendor shims: include: [path.resolve() + '/client/src/'],
// [{expected_local_var : dependency}, ...] jshint: {
new webpack.ProvidePlugin({ emitErrors: true
$: 'jquery',
jQuery: 'jquery',
'window.jQuery': 'jquery',
_: 'lodash',
'CodeMirror': 'codemirror',
'jsyaml': 'js-yaml',
'jsonlint': 'codemirror.jsonlint'
}),
new webpack.DefinePlugin({ $ENV: {} }),
new webpack.optimize.CommonsChunkPlugin('vendor', 'tower.vendor.js'),
new webpack.optimize.UglifyJsPlugin({
mangle: false
})
],
module: {
loaders: [{
// disable AMD loading (broken in this lib) and default to CommonJS (not broken)
test: /\.angular-tz-extensions.js$/,
loader: 'imports?define=>false!'
}, {
// es6 -> es5
test: /\.js$/,
loader: 'babel-loader',
exclude: /(node_modules)/,
query: {
presets: ['es2015']
}
}, ]
},
resolve: {
alias: {
'codemirror.jsonlint': path.resolve() + '/node_modules/codemirror/addon/lint/json-lint.js',
'jquery.resize': path.resolve() + '/node_modules/javascript-detect-element-resize/jquery.resize.js',
'select2': path.resolve() + '/node_modules/select2/dist/js/select2.full.js'
} }
} }
}; ];
var release = baseConfig();
release.plugins.push(new webpack.DefinePlugin({ $ENV: {} }));
release.plugins.push(new webpack.optimize.UglifyJsPlugin({ mangle: false }));
module.exports = { dev: dev, release: release }; module.exports = { dev: dev, release: release };