From 55593525854aa29f0c0f2c1d62aeca3f6781c7fe Mon Sep 17 00:00:00 2001 From: Gunther Brunner Date: Thu, 21 Aug 2014 15:09:15 +0900 Subject: [PATCH] Moved webpack server configuration to webpack.config. --- gulpfile.js | 6 +- lib/roles/app.js | 11 +- lib/roles/app/middleware/webpack.js | 2 +- res/common/status/webpack.config.js | 2 +- webpack.config.js | 161 ++++++++++++++-------------- 5 files changed, 91 insertions(+), 91 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 9ad9c893..aa35cf2f 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -4,13 +4,13 @@ var jshint = require('gulp-jshint') var jsonlint = require('gulp-jsonlint') var webpack = require('webpack') var ngminPlugin = require('ngmin-webpack-plugin') -var webpackConfig = require('./webpack.config.js') -var webpackStatusConfig = require('./res/common/status/webpack.config.js') +var webpackConfig = require('./webpack.config').webpack +var webpackStatusConfig = require('./res/common/status/webpack.config') var gettext = require('gulp-angular-gettext') var jade = require('gulp-jade') var clean = require('gulp-clean') var protractor = require("gulp-protractor") -var protractorConfig = require('./res/test/protractor.conf.js') +var protractorConfig = require('./res/test/protractor.conf') var karma = require('karma').server var karmaConfig = '/res/test/karma.conf.js' var stream = require('stream') diff --git a/lib/roles/app.js b/lib/roles/app.js index ae8352ac..17f1501d 100644 --- a/lib/roles/app.js +++ b/lib/roles/app.js @@ -21,6 +21,8 @@ var deviceIconMiddleware = require('./app/middleware/device-icons') var browserIconMiddleware = require('./app/middleware/browser-icons') var appstoreIconMiddleware = require('./app/middleware/appstore-icons') +var webpackServerConfig = require('./../../webpack.config').webpackServer + module.exports = function(options) { var log = logger.createLogger('app') , app = express() @@ -45,13 +47,8 @@ module.exports = function(options) { })) } else { - app.use('/static/app/build', require('./app/middleware/webpack')({ - debug: true - , devtool: 'eval' - , stats: { - colors: true - } - })) + app.use('/static/app/build', + require('./app/middleware/webpack')(webpackServerConfig)) } app.use('/static/bower_components', diff --git a/lib/roles/app/middleware/webpack.js b/lib/roles/app/middleware/webpack.js index c489ed71..0910322d 100644 --- a/lib/roles/app/middleware/webpack.js +++ b/lib/roles/app/middleware/webpack.js @@ -9,7 +9,7 @@ var MemoryFileSystem = require('webpack/node_modules/memory-fs') var logger = require('../../../util/logger') var lifecycle = require('../../../util/lifecycle') -var globalOptions = require('../../../../webpack.config') +var globalOptions = require('../../../../webpack.config').webpack // Similar to webpack-dev-middleware, but integrates with our custom // lifecycle, behaves more like normal express middleware, and removes diff --git a/res/common/status/webpack.config.js b/res/common/status/webpack.config.js index 4c4c6f96..df7f8c18 100644 --- a/res/common/status/webpack.config.js +++ b/res/common/status/webpack.config.js @@ -1,5 +1,5 @@ var pathutil = require('./../../../lib/util/pathutil') -var options = require('./../../../webpack.config.js') +var options = require('./../../../webpack.config').webpack var _ = require('lodash') module.exports = _.defaults(options, { diff --git a/webpack.config.js b/webpack.config.js index 50b1b815..95bcd609 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -3,86 +3,89 @@ var webpack = require('webpack') var CommonsChunkPlugin = require("webpack/lib/optimize/CommonsChunkPlugin") module.exports = { - cache: true -, entry: { - app: pathutil.resource('app/app.js') - , authldap: pathutil.resource('auth/ldap/scripts/entry.js') - , authmock: pathutil.resource('auth/mock/scripts/entry.js') - } -, output: { - path: pathutil.resource('build') - , publicPath: '/static/app/build/' - , filename: 'entry/[name].entry.js' - , chunkFilename: '[id].[hash].chunk.js' - } -, stats: { - colors: true - } -, resolve: { - modulesDirectories: [ - pathutil.resource('app/components') - , pathutil.resource('web_modules') - , pathutil.resource('bower_components') - , './node_modules' + webpack: { + cache: true, + entry: { + app: pathutil.resource('app/app.js'), + authldap: pathutil.resource('auth/ldap/scripts/entry.js'), + authmock: pathutil.resource('auth/mock/scripts/entry.js') + }, + output: { + path: pathutil.resource('build'), + publicPath: '/static/app/build/', + filename: 'entry/[name].entry.js', + chunkFilename: '[id].[hash].chunk.js' + }, + stats: { + colors: true + }, + resolve: { + modulesDirectories: [ + pathutil.resource('app/components') + , pathutil.resource('web_modules') + , pathutil.resource('bower_components') + , './node_modules' + ], + alias: { + 'angular-bootstrap': 'angular-bootstrap/ui-bootstrap-tpls', + 'localforage': 'localforage/dist/localforage.js', + 'socket.io': 'socket.io-client', + 'oboe': 'oboe/dist/oboe-browser', + 'bluebird': 'bluebird/js/browser/bluebird' + } + }, + module: { + loaders: [ + { test: /\.css$/, loader: 'style!css' }, + { test: /\.less$/, loader: 'style-loader!css-loader!less-loader'}, + { test: /\.json$/, loader: 'json' }, + { test: /\.jpg$/, loader: "url-loader?limit=1000&mimetype=image/jpeg" }, + { test: /\.png$/, loader: "url-loader?limit=1000&mimetype=image/png" }, + { test: /\.gif$/, loader: "url-loader?limit=1000&mimetype=image/gif" }, + { test: /\.svg$/, loader: "url-loader?limit=1&mimetype=image/svg+xml" }, + { test: /\.woff$/, loader: "url-loader?limit=1&mimetype=application/font-woff" }, + { test: /\.otf$/, loader: "url-loader?limit=1&mimetype=application/font-woff" }, + { test: /\.ttf$/, loader: "url-loader?limit=1&mimetype=application/font-woff" }, + { test: /\.eot$/, loader: "url-loader?limit=1&mimetype=vnd.ms-fontobject" }, + { test: /\.jade/, loader: 'template-html-loader' }, + { test: /\.html/, loader: 'html-loader' }, + { test: /angular\.js/, loader: 'exports?angular'}, + { test: /angular-route\.js/, loader: 'imports?angular=angular'}, + { test: /angular-touch\.js/, loader: 'imports?angular=angular'}, + { test: /angular-animate\.js/, loader: 'imports?angular=angular'}, + { test: /angular-growl\.js/, loader: 'imports?angular=angular'}, + { test: /oboe-browser\.js/, loader: 'imports?define=>false!exports?oboe'}, + { test: /uuid\.js/, loader: 'imports?require=>undefined'}, + { test: /localforage\.js/, loader: 'script'}, + { test: /ui-bootstrap-tpls\.js/, loader: 'script'}, + { test: /dialogs\.js/, loader: 'script'}, + { test: /bluebird\.js/, loader: 'imports?require=>undefined'} + ], + noParse: [ + // pathutil.resource('bower_components') + ] + }, + plugins: [ + new webpack.ResolverPlugin( + new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin( + 'bower.json' + , ['main'] + ) + ) + , new webpack.ResolverPlugin( + new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin( + '.bower.json' + , ['main'] + ) + ) + , new CommonsChunkPlugin("entry/commons.entry.js") ] - , alias: { - 'angular-bootstrap': 'angular-bootstrap/ui-bootstrap-tpls' - , 'localforage': 'localforage/dist/localforage.js' - , 'socket.io': 'socket.io-client' - , 'oboe': 'oboe/dist/oboe-browser' - , 'bluebird': 'bluebird/js/browser/bluebird' + }, + webpackServer: { + debug: true, + devtool: 'eval', + stats: { + colors: true } } -, module: { - loaders: [ - { test: /\.css$/, loader: 'style!css' } - , { test: /\.less$/, loader: 'style-loader!css-loader!less-loader'} - , { test: /\.json$/, loader: 'json' } - , { test: /\.jpg$/, loader: "url-loader?limit=1000&mimetype=image/jpeg" } - , { test: /\.png$/, loader: "url-loader?limit=1000&mimetype=image/png" } - , { test: /\.gif$/, loader: "url-loader?limit=1000&mimetype=image/gif" } - , { test: /\.svg$/ - , loader: "url-loader?limit=1&mimetype=image/svg+xml" } - , { test: /\.woff$/ - , loader: "url-loader?limit=1&mimetype=application/font-woff" } - , { test: /\.otf$/ - , loader: "url-loader?limit=1&mimetype=application/font-woff" } - , { test: /\.ttf$/ - , loader: "url-loader?limit=1&mimetype=application/font-woff" } - , { test: /\.eot$/ - , loader: "url-loader?limit=1&mimetype=vnd.ms-fontobject" } - , { test: /\.jade/ - , loader: 'template-html-loader' } - , { test: /\.html/, loader: 'html-loader' } - , { test: /angular\.js/, loader: 'exports?angular'} - , { test: /angular-route\.js/, loader: 'imports?angular=angular'} - , { test: /angular-touch\.js/, loader: 'imports?angular=angular'} - , { test: /angular-animate\.js/, loader: 'imports?angular=angular'} - , { test: /angular-growl\.js/, loader: 'imports?angular=angular'} - , { test: /oboe-browser\.js/, loader: 'imports?define=>false!exports?oboe'} - , { test: /uuid\.js/, loader: 'imports?require=>undefined'} - , { test: /localforage\.js/, loader: 'script'} - , { test: /ui-bootstrap-tpls\.js/, loader: 'script'} - , { test: /dialogs\.js/, loader: 'script'} - , { test: /bluebird\.js/, loader: 'imports?require=>undefined'} - ] - , noParse: [ - // pathutil.resource('bower_components') - ] - } -, plugins: [ - new webpack.ResolverPlugin( - new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin( - 'bower.json' - , ['main'] - ) - ) - , new webpack.ResolverPlugin( - new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin( - '.bower.json' - , ['main'] - ) - ) - , new CommonsChunkPlugin("entry/commons.entry.js") - ] }