From 6146fbe6a76ec6c462894b16124ec4b4abbbf5ce Mon Sep 17 00:00:00 2001 From: Garren Smith Date: Tue, 14 Mar 2017 11:08:03 +0200 Subject: [PATCH 1/8] dev working --- devserver.js | 50 ++++++++++++++++++++---------------- package.json | 4 +-- webpack.config.dev.js | 70 +++++++++++++++++++++++++++++++++------------------ 3 files changed, 76 insertions(+), 48 deletions(-) diff --git a/devserver.js b/devserver.js index c8d0ffc10..ccce17968 100644 --- a/devserver.js +++ b/devserver.js @@ -64,24 +64,6 @@ function getCspHeaders () { }; var runWebpackServer = function () { - var options = { - contentBase: __dirname + '/dist/debug', - publicPath: '/', - outputPath: '/', - filename: 'bundle.js', - host: 'localhost', - port: process.env.FAUXTON_PORT || 8000, - hot: false, - historyApiFallback: true, - stats: { - colors: true, - }, - headers: getCspHeaders(), - }; - - var compiler = webpack(config); - - var server = new WebpackDev(compiler, options); var proxy = httpProxy.createServer({ secure: false, changeOrigin: true, @@ -98,9 +80,35 @@ var runWebpackServer = function () { // don't explode on cancelled requests }); - server.app.all('*', function (req, res) { - proxy.web(req, res); - }); + var options = { + contentBase: __dirname + '/dist/debug', + publicPath: '/', + //outputPath: '/', + filename: 'bundle.js', + host: 'localhost', + port: process.env.FAUXTON_PORT || 8000, + hot: false, + historyApiFallback: true, + stats: { + colors: true, + }, + headers: getCspHeaders(), + setup: (app) => { + app.all('*', (req, res, next) => { + const accept = req.headers.accept ? req.headers.accept.split(',') : ''; + console.log(accept); + if (accept[0] === 'application/json') { + proxy.web(req, res); + return; + } + + next(); + }); + } + }; + + const compiler = webpack(config); + const server = new WebpackDev(compiler, options); server.listen(options.port, '0.0.0.0', function (err) { if (err) { diff --git a/package.json b/package.json index dabe4dd61..a80ed63be 100644 --- a/package.json +++ b/package.json @@ -107,8 +107,8 @@ "velocity-animate": "^1.4.2", "velocity-react": "1.2.0", "visualizeRevTree": "git+https://github.com/neojski/visualizeRevTree.git#gh-pages", - "webpack": "^1.12.12", - "webpack-dev-server": "^1.14.1", + "webpack": "~2.2.1", + "webpack-dev-server": "~2.4.1", "whatwg-fetch": "~2.0.1" }, "scripts": { diff --git a/webpack.config.dev.js b/webpack.config.dev.js index ac734dbae..da70d8287 100644 --- a/webpack.config.dev.js +++ b/webpack.config.dev.js @@ -19,50 +19,70 @@ module.exports = { new webpack.optimize.LimitChunkCountPlugin({maxChunks: 1}) ], module: { - preLoaders: [ - { - test: /\.jsx?$/, - loaders: ['eslint'], - exclude: /node_modules/ - } - ], - loaders: [ + rules: [ + { + test: /\.jsx?$/, + enforce: "pre", + use: ['eslint-loader'], + exclude: /node_modules/ + }, { test: /\.jsx?$/, exclude: /node_modules/, - //loader: 'react-hot!babel' - loader: 'babel' + use: 'babel-loader' }, - { test: require.resolve("jquery"), - loader: "expose?$!expose?jQuery" + { + test: require.resolve('jquery'), + use: [{ + loader: 'expose-loader', + options: 'jQuery' + }, + { + loader: 'expose-loader', + options: '$' + }] }, - { test: require.resolve("backbone"), - loader: "expose?Backbone" + { + test: require.resolve("backbone"), + use: [{ + loader: 'expose-loader', + options: 'Backbone' + }] }, { test: /\.less$/, - loader: 'style!css!less' + use: [ + "style-loader", + "css-loader", + "less-loader" + ] + }, + { + test: /\.css$/, + use: [ + "style-loader", + "css-loader" + ] }, - { test: /\.css$/, loader: 'style!css' }, { test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, - loader: 'url?limit=10000&mimetype=application/font-woff&name=dashboard.assets/fonts/[name].[ext]' + loader: 'url-loader?limit=10000&mimetype=application/font-woff&name=dashboard.assets/fonts/[name].[ext]' }, { - test: /\.woff2(\?\S*)?$/, loader: 'url?limit=10000&mimetype=application/font-woff2&name=dashboard.assets/fonts/[name].[ext]' + test: /\.woff2(\?\S*)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff2&name=dashboard.assets/fonts/[name].[ext]' }, { - test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/font-tff&name=dashboard.assets/fonts/[name].[ext]' + test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-tff&name=dashboard.assets/fonts/[name].[ext]' }, - { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file?name=dashboard.assets/fonts/[name].[ext]' }, - { test: /\.swf(\?v=\d+\.\d+\.\d+)?$/, loader: 'file?name=dashboard.assets/[name].[ext]' }, - { test: /\.png(\?v=\d+\.\d+\.\d+)?$/, loader: 'file?name=dashboard.assets/img/[name].[ext]' }, - { test: /\.gif(\?v=\d+\.\d+\.\d+)?$/, loader: 'file?name=dashboard.assets/img/[name].[ext]' }, - { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=image/svg+xml&name=dashboard.assets/img/[name].[ext]' } + { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/fonts/[name].[ext]' }, + { test: /\.swf(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/[name].[ext]' }, + { test: /\.png(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/img/[name].[ext]' }, + { test: /\.gif(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/img/[name].[ext]' }, + { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=image/svg+xml&name=dashboard.assets/img/[name].[ext]' } ] }, resolve: { - extensions: ['', '.js', '.jsx'], //We can use .js and React's .jsx files using Babel + extensions: ['*', '.js', '.jsx'], //We can use .js and React's .jsx files using Babel alias: { "bootstrap": "../assets/js/libs/bootstrap", "underscore": "lodash", From b30d5210ef3bd0546ff5a23dbb593abeef1a9878 Mon Sep 17 00:00:00 2001 From: Garren Smith Date: Tue, 14 Mar 2017 14:18:38 +0200 Subject: [PATCH 2/8] up configs updated --- package.json | 2 +- test/test.config.underscore | 2 +- webpack.config.release.js | 79 ++++++++++++++++++++++++++-------------- webpack.config.test-dev.js | 87 +++++++++++++++++++++++++++++---------------- webpack.config.test.js | 81 ++++++++++++++++++++++++++--------------- 5 files changed, 162 insertions(+), 89 deletions(-) diff --git a/package.json b/package.json index a80ed63be..7fca83986 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "bootstrap": "^3.3.7", "enzyme": "^2.7.1", "es5-shim": "4.5.4", - "extract-text-webpack-plugin": "^1.0.1", + "extract-text-webpack-plugin": "~2.1.0", "fetch-mock": "^5.9.3", "jest": "^18.1.0", "less": "^2.7.2", diff --git a/test/test.config.underscore b/test/test.config.underscore index 32a16a7f8..501c6f5d3 100644 --- a/test/test.config.underscore +++ b/test/test.config.underscore @@ -12,7 +12,7 @@ // License for the specific language governing permissions and limitations under // the License. // - +var Promise = require('bluebird'); require([ "url-polyfill", <% _.each(testFiles, function (test) {%> diff --git a/webpack.config.release.js b/webpack.config.release.js index 0b71897bc..c847357d6 100644 --- a/webpack.config.release.js +++ b/webpack.config.release.js @@ -34,11 +34,11 @@ module.exports = { // moment doesn't offer a modular API, so manually remove locale // see https://github.com/moment/moment/issues/2373 new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), - new webpack.optimize.DedupePlugin(), new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false - } + }, + sourceMap: true }), new ExtractTextPlugin("styles.css") ], @@ -49,51 +49,76 @@ module.exports = { }, module: { - preLoaders: [ - { - test: /\.jsx?$/, - loaders: ['eslint'], - exclude: /node_modules/ - } - ], loaders: [ { test: /\.jsx?$/, + enforce: "pre", + use: ['eslint-loader'], + exclude: /node_modules/ + }, + { + test: /\.jsx?$/, exclude: /node_modules/, - //loader: 'react-hot!babel' - loader: 'babel' + use: 'babel-loader' }, - { test: require.resolve("jquery"), - loader: "expose?$!expose?jQuery" + { + test: require.resolve('jquery'), + use: [{ + loader: 'expose-loader', + options: 'jQuery' + }, + { + loader: 'expose-loader', + options: '$' + }] }, - { test: require.resolve("backbone"), - loader: "expose?Backbone" + { + test: require.resolve("backbone"), + use: [{ + loader: 'expose-loader', + options: 'Backbone' + }] + }, + { + test: /\.less/, + use: ExtractTextPlugin.extract({ + fallback: "style-loader", + use: [ + "css-loader", + "less-loader" + ], + publicPath: '../../' + }), }, - { test: /\.less/, - loader: ExtractTextPlugin.extract("style-loader", "css-loader!less-loader", { + { + test: /\.css/, + use: ExtractTextPlugin.extract({ + fallback: "style-loader", + use: [ + "css-loader", + ], publicPath: '../../' }), }, - { test: /\.css$/, loader: 'style!css' }, { test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, - loader: 'url?limit=10000&mimetype=application/font-woff&name=dashboard.assets/fonts/[name].[ext]' + loader: 'url-loader?limit=10000&mimetype=application/font-woff&name=dashboard.assets/fonts/[name].[ext]' }, { - test: /\.woff2(\?\S*)?$/, loader: 'url?limit=10000&mimetype=application/font-woff2&name=dashboard.assets/fonts/[name].[ext]' + test: /\.woff2(\?\S*)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff2&name=dashboard.assets/fonts/[name].[ext]' }, { - test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/font-tff&name=dashboard.assets/fonts/[name].[ext]' + test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-tff&name=dashboard.assets/fonts/[name].[ext]' }, - { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file?name=dashboard.assets/fonts/[name].[ext]' }, - { test: /\.swf(\?v=\d+\.\d+\.\d+)?$/, loader: 'file?name=dashboard.assets/[name].[ext]' }, - { test: /\.png(\?v=\d+\.\d+\.\d+)?$/, loader: 'file?name=dashboard.assets/img/[name].[ext]' }, - { test: /\.gif(\?v=\d+\.\d+\.\d+)?$/, loader: 'file?name=dashboard.assets/img/[name].[ext]' }, - { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=image/svg+xml&name=dashboard.assets/img/[name].[ext]' } + { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/fonts/[name].[ext]' }, + { test: /\.swf(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/[name].[ext]' }, + { test: /\.png(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/img/[name].[ext]' }, + { test: /\.gif(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/img/[name].[ext]' }, + { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=image/svg+xml&name=dashboard.assets/img/[name].[ext]' } ] }, resolve: { - extensions: ['', '.js', '.jsx'], + extensions: ['*', '.js', '.jsx'], alias: { "underscore": "lodash", "bootstrap": "../assets/js/libs/bootstrap", diff --git a/webpack.config.test-dev.js b/webpack.config.test-dev.js index e24fbd173..c9d724512 100644 --- a/webpack.config.test-dev.js +++ b/webpack.config.test-dev.js @@ -13,60 +13,85 @@ const webpack = require('webpack'); module.exports = { entry: [ - 'mocha!./test/dev.js', //Our starting point for our testing. + 'mocha-loader!./test/dev.js', //Our starting point for our testing. ], module: { - preLoaders: [ - { - test: /\.jsx?$/, - loaders: ['eslint'], - exclude: /node_modules/ - } - ], - loaders: [ + rules: [ + { + test: /\.jsx?$/, + enforce: "pre", + use: ['eslint-loader'], + exclude: /node_modules/ + }, { test: /\.jsx?$/, exclude: /node_modules/, - //loader: 'react-hot!babel' - loader: 'babel' + use: 'babel-loader' }, - { test: require.resolve("jquery"), - loader: "expose?$!expose?jQuery" - }, - { test: require.resolve("sinon"), - loader: "expose?sinon" - }, - { test: require.resolve("backbone"), - loader: "expose?Backbone" + { + test: require.resolve("jquery"), + use: [ + { + loader: 'expose-loader', + options: 'jQuery' + }, + { + loader: 'expose-loader', + options: '$' + }] + }, + { + test: require.resolve("backbone"), + use: [{ + loader: 'expose-loader', + options: 'Backbone' + }] + }, + { + test: require.resolve("sinon"), + use: [{ + loader: 'expose-loader', + options: 'sinon' + }] }, { test: require.resolve("react"), - loader: "imports?shim=es5-shim/es5-shim&sham=es5-shim/es5-sham" + loader: "imports-loader?shim=es5-shim/es5-shim&sham=es5-shim/es5-sham" }, { test: /\.less$/, - loader: 'style!css!less' + use: [ + "style-loader", + "css-loader", + "less-loader" + ] + }, + { + test: /\.css$/, + use: [ + "style-loader", + "css-loader" + ] }, - { test: /\.css$/, loader: 'style!css' }, { test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, - loader: 'url?limit=10000&mimetype=application/font-woff&name=dashboard.assets/fonts/[name].[ext]' + loader: 'url-loader?limit=10000&mimetype=application/font-woff&name=dashboard.assets/fonts/[name].[ext]' }, { - test: /\.woff2(\?\S*)?$/, loader: 'url?limit=10000&mimetype=application/font-woff2&name=dashboard.assets/fonts/[name].[ext]' + test: /\.woff2(\?\S*)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff2&name=dashboard.assets/fonts/[name].[ext]' }, { - test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/font-tff&name=dashboard.assets/fonts/[name].[ext]' + test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-tff&name=dashboard.assets/fonts/[name].[ext]' }, - { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file?name=dashboard.assets/fonts/[name].[ext]' }, - { test: /\.swf(\?v=\d+\.\d+\.\d+)?$/, loader: 'file?name=dashboard.assets/[name].[ext]' }, - { test: /\.png(\?v=\d+\.\d+\.\d+)?$/, loader: 'file?name=dashboard.assets/img/[name].[ext]' }, - { test: /\.gif(\?v=\d+\.\d+\.\d+)?$/, loader: 'file?name=dashboard.assets/img/[name].[ext]' }, - { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=image/svg+xml&name=dashboard.assets/img/[name].[ext]' } + { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/fonts/[name].[ext]' }, + { test: /\.swf(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/[name].[ext]' }, + { test: /\.png(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/img/[name].[ext]' }, + { test: /\.gif(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/img/[name].[ext]' }, + { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=image/svg+xml&name=dashboard.assets/img/[name].[ext]' } ] }, resolve: { - extensions: ['', '.js', '.jsx'], //We can use .js and React's .jsx files using Babel + extensions: ['*', '.js', '.jsx'], //We can use .js and React's .jsx files using Babel alias: { "bootstrap": "../assets/js/libs/bootstrap", "underscore": "lodash" diff --git a/webpack.config.test.js b/webpack.config.test.js index 54a60bb74..8a98c9288 100644 --- a/webpack.config.test.js +++ b/webpack.config.test.js @@ -16,64 +16,87 @@ module.exports = { './test/test.config.js' //Our starting point for our testing. ], module: { - preLoaders: [ - { - test: /\.jsx?$/, - loaders: ['eslint'], - exclude: /node_modules/ - } - ], - loaders: [ + rules: [ + { + test: /\.jsx?$/, + enforce: "pre", + use: ['eslint-loader'], + exclude: /node_modules/ + }, { test: /\.jsx?$/, exclude: /node_modules/, //loader: 'react-hot!babel' - loader: 'babel' + use: 'babel-loader' }, { - test: require.resolve("jquery"), - loader: "expose?$!expose?jQuery" + test: require.resolve('jquery'), + use: [ + { + loader: 'expose-loader', + options: 'jQuery' + }, + { + loader: 'expose-loader', + options: '$' + }] + }, + { + test: require.resolve("backbone"), + use: [{ + loader: 'expose-loader', + options: 'Backbone' + }] }, { test: require.resolve("sinon"), - loader: "expose?sinon" - }, - { - test: require.resolve("backbone"), - loader: "expose?Backbone" + use: [{ + loader: 'expose-loader', + options: 'sinon' + }] }, { test: require.resolve("url-polyfill"), - loader: "imports?this=>window" + use: "imports-loader?this=>window" }, { test: require.resolve("react"), - loader: "imports?shim=es5-shim/es5-shim&sham=es5-shim/es5-sham" + use: "imports-loader?shim=es5-shim/es5-shim&sham=es5-shim/es5-sham" }, { test: /\.less$/, - loader: 'style!css!less' + use: [ + "style-loader", + "css-loader", + "less-loader" + ] + }, + { + test: /\.css$/, + use: [ + "style-loader", + "css-loader" + ] }, - { test: /\.css$/, loader: 'style!css' }, { test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, - loader: 'url?limit=10000&mimetype=application/font-woff&name=dashboard.assets/fonts/[name].[ext]' + loader: 'url-loader?limit=10000&mimetype=application/font-woff&name=dashboard.assets/fonts/[name].[ext]' }, { - test: /\.woff2(\?\S*)?$/, loader: 'url?limit=10000&mimetype=application/font-woff2&name=dashboard.assets/fonts/[name].[ext]' + test: /\.woff2(\?\S*)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff2&name=dashboard.assets/fonts/[name].[ext]' }, { - test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/font-tff&name=dashboard.assets/fonts/[name].[ext]' + test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-tff&name=dashboard.assets/fonts/[name].[ext]' }, - { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file?name=dashboard.assets/fonts/[name].[ext]' }, - { test: /\.swf(\?v=\d+\.\d+\.\d+)?$/, loader: 'file?name=dashboard.assets/[name].[ext]' }, - { test: /\.png(\?v=\d+\.\d+\.\d+)?$/, loader: 'file?name=dashboard.assets/img/[name].[ext]' }, - { test: /\.gif(\?v=\d+\.\d+\.\d+)?$/, loader: 'file?name=dashboard.assets/img/[name].[ext]' }, - { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=image/svg+xml&name=dashboard.assets/img/[name].[ext]' } + { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/fonts/[name].[ext]' }, + { test: /\.swf(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/[name].[ext]' }, + { test: /\.png(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/img/[name].[ext]' }, + { test: /\.gif(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/img/[name].[ext]' }, + { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=image/svg+xml&name=dashboard.assets/img/[name].[ext]' } ] }, resolve: { - extensions: ['', '.js', '.jsx'], //We can use .js and React's .jsx files using Babel + extensions: ['*', '.js', '.jsx'], //We can use .js and React's .jsx files using Babel alias: { "bootstrap": "../assets/js/libs/bootstrap", "underscore": "lodash", From b994c3abbcdf4168756999783c8d5befd6e95780 Mon Sep 17 00:00:00 2001 From: Garren Smith Date: Tue, 14 Mar 2017 15:58:30 +0200 Subject: [PATCH 3/8] start vendor section --- devserver.js | 3 +-- webpack.config.release.js | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/devserver.js b/devserver.js index ccce17968..e5f773955 100644 --- a/devserver.js +++ b/devserver.js @@ -96,12 +96,11 @@ var runWebpackServer = function () { setup: (app) => { app.all('*', (req, res, next) => { const accept = req.headers.accept ? req.headers.accept.split(',') : ''; - console.log(accept); + if (accept[0] === 'application/json') { proxy.web(req, res); return; } - next(); }); } diff --git a/webpack.config.release.js b/webpack.config.release.js index c847357d6..a2a807b6d 100644 --- a/webpack.config.release.js +++ b/webpack.config.release.js @@ -15,13 +15,13 @@ var path = require('path'); module.exports = { // Entry point for static analyzer: - entry: [ - './app/main.js' - ], + entry: { + bundle: './app/main.js' + }, output: { path: path.join(__dirname, '/dist/release'), - filename: 'bundle.js' + filename: '[name].js' }, plugins: [ @@ -40,7 +40,14 @@ module.exports = { }, sourceMap: true }), - new ExtractTextPlugin("styles.css") + new ExtractTextPlugin("styles.css"), + new webpack.optimize.CommonsChunkPlugin({ + name: 'vendor', // Specify the common bundle's name. + minChunks: function (module) { + // this assumes your vendor imports exist in the node_modules directory + return module.context && module.context.indexOf('node_modules') !== -1; + } + }) ], resolve: { From b4dd0bc961422b5d590482c18f167525997eae3b Mon Sep 17 00:00:00 2001 From: Garren Smith Date: Wed, 15 Mar 2017 17:12:48 +0200 Subject: [PATCH 4/8] initial working for dev and release --- Gruntfile.js | 33 ++------------------------------- assets/index.underscore | 13 ++----------- devserver.js | 12 ++++++------ package.json | 3 ++- tasks/fauxton.js | 9 +++++---- webpack.config.dev.js | 30 ++++++++++++++++++++---------- webpack.config.release.js | 40 ++++++++++++++++++++++++---------------- 7 files changed, 61 insertions(+), 79 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 1eb694676..389b76f07 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -18,8 +18,6 @@ /*jslint node: true */ "use strict"; -const path = require('path'); - module.exports = function (grunt) { var helper = require('./tasks/helper.js'), initHelper = helper.init(grunt), @@ -195,33 +193,7 @@ module.exports = function (grunt) { template: 'test/nightwatch_tests/nightwatch.json.underscore', dest: 'test/nightwatch_tests/nightwatch.json' } - }, - - // these rename the already-bundled, minified requireJS and CSS files to include their hash - md5: { - bundlejs: { - files: { 'dist/release/dashboard.assets/js/': 'dist/release/bundle.js' }, - options: { - afterEach: function (fileChanges) { - // replace the REQUIREJS_FILE placeholder with the actual filename - const newFilename = path.basename(fileChanges.newPath); - config.template.release.variables.bundlejs = config.template.release.variables.bundlejs.replace(/BUNDLEJS_FILE/, newFilename); - } - } - }, - - css: { - files: { 'dist/release/dashboard.assets/css/': 'dist/release/styles.css' }, - options: { - afterEach: function (fileChanges) { - // replace the CSS_FILE placeholder with the actual filename - const newFilename = path.basename(fileChanges.newPath); - config.template.release.variables.css = config.template.release.variables.css.replace(/CSS_FILE/, newFilename); - } - } - } - }, - + } }; grunt.initConfig(config); @@ -237,7 +209,6 @@ module.exports = function (grunt) { grunt.loadNpmTasks('grunt-contrib-copy'); grunt.loadNpmTasks('grunt-contrib-clean'); grunt.loadNpmTasks('grunt-shell'); - grunt.loadNpmTasks('grunt-md5'); /* * Default task */ @@ -256,7 +227,7 @@ module.exports = function (grunt) { // minify code and css, ready for release. grunt.registerTask('build', ['copy:distDepsRequire', 'shell:webpackrelease', - 'md5:bundlejs', 'md5:css', 'template:release']); + /*'md5:bundlejs',*/ 'md5:css', 'template:release']); /* * Build the app in either dev, debug, or release mode */ diff --git a/assets/index.underscore b/assets/index.underscore index 2d97e0bf4..d92c6e2fa 100644 --- a/assets/index.underscore +++ b/assets/index.underscore @@ -19,11 +19,8 @@ - Project Fauxton + <%= htmlWebpackPlugin.options.title %> - <% if (!development) { %> - - <% } %> - <% if (base) { %> - - <% } %> @@ -53,9 +47,6 @@
- - - - + diff --git a/devserver.js b/devserver.js index e5f773955..4aca93109 100644 --- a/devserver.js +++ b/devserver.js @@ -4,6 +4,7 @@ var webpack = require('webpack'); var WebpackDev = require('webpack-dev-server'); var config = require('./webpack.config.dev.js'); var httpProxy = require('http-proxy'); +var path = require('path'); var loadSettings = function () { @@ -81,14 +82,12 @@ var runWebpackServer = function () { }); var options = { - contentBase: __dirname + '/dist/debug', - publicPath: '/', - //outputPath: '/', - filename: 'bundle.js', + contentBase: path.join(__dirname, '/dist/debug/'), host: 'localhost', port: process.env.FAUXTON_PORT || 8000, + overlay: true, hot: false, - historyApiFallback: true, + historyApiFallback: false, stats: { colors: true, }, @@ -97,10 +96,11 @@ var runWebpackServer = function () { app.all('*', (req, res, next) => { const accept = req.headers.accept ? req.headers.accept.split(',') : ''; - if (accept[0] === 'application/json') { + if (/application\/json/.test(accept[0])) { proxy.web(req, res); return; } + next(); }); } diff --git a/package.json b/package.json index 7fca83986..c9cd437dd 100644 --- a/package.json +++ b/package.json @@ -76,6 +76,7 @@ "grunt-exec": "~1.0.1", "grunt-md5": "^0.1.11", "grunt-shell": "^2.0.1", + "html-webpack-plugin": "^2.28.0", "http-proxy": "^1.16.0", "imports-loader": "^0.7.0", "jquery": "^2.2.0", @@ -115,7 +116,7 @@ "stylecheck": "eslint --ext=js,jsx .", "webpack:dev": "webpack --debug --progress --colors --config ./webpack.config.dev.js", "webpack:test": "webpack --debug --progress --colors --config ./webpack.config.test.js", - "webpack:release": "webpack --debug --progress --colors --config ./webpack.config.release.js", + "webpack:release": "webpack --optimize-minimize --debug --progress --colors --config ./webpack.config.release.js", "jest": "jest --config ./jest-config.json", "test": "grunt test && npm run jest", "phantomjs": "./node_modules/.bin/mocha-phantomjs --debug=false --ssl-protocol=sslv2 --web-security=false --ignore-ssl-errors=true ./test/runner.html", diff --git a/tasks/fauxton.js b/tasks/fauxton.js index 3fbad30bc..29c778e7d 100644 --- a/tasks/fauxton.js +++ b/tasks/fauxton.js @@ -16,11 +16,12 @@ module.exports = function (grunt) { os = require('os'); grunt.registerMultiTask('template', 'generates an html file from a specified template', function () { - var data = this.data, - _ = grunt.util._, - tmpl = _.template(grunt.file.read(data.src), null, data.variables); + console.log('template can be removed', this.data.src); + // var data = this.data, + // _ = grunt.util._, + // tmpl = _.template(grunt.file.read(data.src), null, data.variables); - grunt.file.write(data.dest, tmpl(data.variables)); + // grunt.file.write(data.dest, tmpl(data.variables)); }); grunt.registerMultiTask('get_deps', 'Fetch external dependencies', function () { diff --git a/webpack.config.dev.js b/webpack.config.dev.js index da70d8287..dcf6938ec 100644 --- a/webpack.config.dev.js +++ b/webpack.config.dev.js @@ -10,13 +10,29 @@ // License for the specific language governing permissions and limitations under // the License. const webpack = require('webpack'); +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const path = require('path'); module.exports = { - entry: [ - './app/main.js' //Our starting point for our development. - ], + entry: { + bundle: './app/main.js' //Our starting point for our development. + }, + + output: { + path: path.join(__dirname, '/dist/debug/'), + filename: 'dashboard.assets/js/[name].js' + }, + plugins: [ - new webpack.optimize.LimitChunkCountPlugin({maxChunks: 1}) + new webpack.optimize.LimitChunkCountPlugin({maxChunks: 1}), + new HtmlWebpackPlugin({ + template: './assets/index.underscore', // Load a custom template (ejs by default see the FAQ for details) + title: 'Project Fauxton', + filename: 'index.html', + development: true, + generationLabel: 'Fauxton Dev', + generationDate: new Date().toISOString() + }), ], module: { rules: [ @@ -88,11 +104,5 @@ module.exports = { "underscore": "lodash", } }, - output: { - path: __dirname + '/dist/debug', - publicPath: '/', - filename: 'bundle.js' //All our code is compiled into a single file called bundle.js - }, - devtool: 'source-map' }; diff --git a/webpack.config.release.js b/webpack.config.release.js index a2a807b6d..b206b456c 100644 --- a/webpack.config.release.js +++ b/webpack.config.release.js @@ -11,6 +11,7 @@ // the License. var webpack = require('webpack'); var ExtractTextPlugin = require("extract-text-webpack-plugin"); +var HtmlWebpackPlugin = require('html-webpack-plugin'); var path = require('path'); module.exports = { @@ -20,8 +21,8 @@ module.exports = { }, output: { - path: path.join(__dirname, '/dist/release'), - filename: '[name].js' + path: path.join(__dirname, '/dist/release/'), + filename: 'dashboard.assets/js/[name].[chunkhash].js' }, plugins: [ @@ -40,14 +41,26 @@ module.exports = { }, sourceMap: true }), - new ExtractTextPlugin("styles.css"), new webpack.optimize.CommonsChunkPlugin({ name: 'vendor', // Specify the common bundle's name. minChunks: function (module) { - // this assumes your vendor imports exist in the node_modules directory - return module.context && module.context.indexOf('node_modules') !== -1; + // this assumes your vendor imports exist in the node_modules directory + return module.context && module.context.indexOf('node_modules') !== -1; } - }) + }), + new webpack.optimize.CommonsChunkPlugin({ + name: "manifest", + minChunks: Infinity + }), + new HtmlWebpackPlugin({ + template: './assets/index.underscore', // Load a custom template (ejs by default see the FAQ for details) + title: 'Project Fauxton', + filename: 'index.html', + development: false, + generationLabel: 'Fauxton', + generationDate: new Date().toISOString() + }), + new ExtractTextPlugin("dashboard.assets/css/styles.[chunkhash].css"), ], resolve: { @@ -94,18 +107,14 @@ module.exports = { "css-loader", "less-loader" ], - publicPath: '../../' + publicPath: '../' }), }, { - test: /\.css/, - use: ExtractTextPlugin.extract({ - fallback: "style-loader", - use: [ - "css-loader", - ], - publicPath: '../../' - }), + test: /\.css$/, use: [ + 'style-loader', + 'css-loader' + ] }, { test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, @@ -118,7 +127,6 @@ module.exports = { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-tff&name=dashboard.assets/fonts/[name].[ext]' }, { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/fonts/[name].[ext]' }, - { test: /\.swf(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/[name].[ext]' }, { test: /\.png(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/img/[name].[ext]' }, { test: /\.gif(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/img/[name].[ext]' }, { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=image/svg+xml&name=dashboard.assets/img/[name].[ext]' } From 3ca454989768b4281ff3cabcb7086f93384c0160 Mon Sep 17 00:00:00 2001 From: Garren Smith Date: Thu, 16 Mar 2017 11:28:46 +0200 Subject: [PATCH 5/8] upgrade to webpack 2 --- Gruntfile.js | 2 +- package.json | 1 - settings.json.default.json | 18 ++++++------------ tasks/helper.js | 23 +++++++++++------------ webpack.config.dev.js | 12 ++++++++---- webpack.config.release.js | 30 +++++++++++++++++------------- 6 files changed, 43 insertions(+), 43 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 389b76f07..b59f3a006 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -227,7 +227,7 @@ module.exports = function (grunt) { // minify code and css, ready for release. grunt.registerTask('build', ['copy:distDepsRequire', 'shell:webpackrelease', - /*'md5:bundlejs',*/ 'md5:css', 'template:release']); + 'template:release']); /* * Build the app in either dev, debug, or release mode */ diff --git a/package.json b/package.json index c9cd437dd..ff101cfbc 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,6 @@ "grunt-contrib-copy": "~1.0.0", "grunt-couchapp": "~0.2.1", "grunt-exec": "~1.0.1", - "grunt-md5": "^0.1.11", "grunt-shell": "^2.0.1", "html-webpack-plugin": "^2.28.0", "http-proxy": "^1.16.0", diff --git a/settings.json.default.json b/settings.json.default.json index 510f7f2d7..2e97ae50b 100644 --- a/settings.json.default.json +++ b/settings.json.default.json @@ -20,10 +20,8 @@ "src": "assets/index.underscore", "dest": "dist/debug/index.html", "variables": { - "bundlejs": "/bundle.js", - "css": "./dashboard.assets/css/index.css", - "base": null, - "development": true + "title": "Project Fauxton", + "generationLabel": "Fauxton Dev" }, "app": { "root": "/", @@ -35,10 +33,8 @@ "src": "assets/index.underscore", "dest": "dist/debug/index.html", "variables": { - "bundlejs": "./dashboard.assets/js/BUNDLEJS_FILE", - "css": "./dashboard.assets/css/CSS_FILE", - "base": null, - "development": false + "title": "Project Fauxton", + "generationLabel": "Fauxton Release" }, "app": { "root": "/", @@ -50,10 +46,8 @@ "src": "assets/index.underscore", "dest": "dist/debug/index.html", "variables": { - "bundlejs": "./js/BUNDLEJS_FILE", - "css": "./css/CSS_FILE", - "base": null, - "development": false + "title": "Project Fauxton", + "generationLabel": "Fauxton Couchapp" }, "app": { "root": "/", diff --git a/tasks/helper.js b/tasks/helper.js index 70d4e127d..d880ae5c0 100644 --- a/tasks/helper.js +++ b/tasks/helper.js @@ -16,26 +16,25 @@ var fs = require('fs'), exports.devServerPort = 8000; exports.couch = 'http://couch:5984/'; -exports.init = function (grunt) { - var _ = grunt.util._; +exports.init = function () { return { readSettingsFile: function () { - if (fs.existsSync("settings.json")) { - return grunt.file.readJSON("settings.json"); - } else if (fs.existsSync('settings.json.default.json')) { - return grunt.file.readJSON('settings.json.default.json'); + if (fs.existsSync(path.join(__dirname, "../settings.json"))) { + return require(path.join(__dirname, "../settings.json")); + } else if (fs.existsSync(path.join(__dirname, '../settings.json.default.json'))) { + return require(path.join(__dirname, '../settings.json.default.json')); } throw new Error('settings.json file missing'); }, readI18nFile: function () { - if (fs.existsSync('i18n.json')) { - return grunt.file.readJSON('i18n.json'); + if (fs.existsSync(path.join(__dirname, '../i18n.json'))) { + return require(path.join(__dirname, '../i18n.json')); } - if (fs.existsSync('i18n.json.default.json')) { - return grunt.file.readJSON('i18n.json.default.json'); + if (fs.existsSync(path.join(__dirname, '../i18n.json.default.json'))) { + return require(path.join(__dirname, '../i18n.json.default.json')); } throw new Error('i18n file missing'); @@ -46,9 +45,9 @@ exports.init = function (grunt) { }, getFileList: function (fileExtensions, defaults) { - return _.reduce(this.readSettingsFile().deps, function (files, dep) { + return this.readSettingsFile().deps.reduce((files, dep) => { if (dep.path) { - _.each(fileExtensions, function (fileExtension) { + fileExtensions.forEach(fileExtension => { files.push(path.join(dep.path, '**/*' + fileExtension)); }); } diff --git a/webpack.config.dev.js b/webpack.config.dev.js index dcf6938ec..693f5004e 100644 --- a/webpack.config.dev.js +++ b/webpack.config.dev.js @@ -12,6 +12,11 @@ const webpack = require('webpack'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const path = require('path'); +const settings = require('./tasks/helper') + .init() + .readSettingsFile() + .template + .development; module.exports = { entry: { @@ -25,14 +30,13 @@ module.exports = { plugins: [ new webpack.optimize.LimitChunkCountPlugin({maxChunks: 1}), - new HtmlWebpackPlugin({ - template: './assets/index.underscore', // Load a custom template (ejs by default see the FAQ for details) + new HtmlWebpackPlugin(Object.assign({ + template: settings.src, title: 'Project Fauxton', filename: 'index.html', - development: true, generationLabel: 'Fauxton Dev', generationDate: new Date().toISOString() - }), + }, settings.variables)), ], module: { rules: [ diff --git a/webpack.config.release.js b/webpack.config.release.js index b206b456c..4674e22b8 100644 --- a/webpack.config.release.js +++ b/webpack.config.release.js @@ -13,6 +13,11 @@ var webpack = require('webpack'); var ExtractTextPlugin = require("extract-text-webpack-plugin"); var HtmlWebpackPlugin = require('html-webpack-plugin'); var path = require('path'); +const settings = require('./tasks/helper') + .init() + .readSettingsFile() + .template + .release; module.exports = { // Entry point for static analyzer: @@ -34,13 +39,13 @@ module.exports = { }), // moment doesn't offer a modular API, so manually remove locale // see https://github.com/moment/moment/issues/2373 - new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), - new webpack.optimize.UglifyJsPlugin({ - compress: { - warnings: false - }, - sourceMap: true - }), + // new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), + // new webpack.optimize.UglifyJsPlugin({ + // compress: { + // warnings: false + // }, + // sourceMap: true + // }), new webpack.optimize.CommonsChunkPlugin({ name: 'vendor', // Specify the common bundle's name. minChunks: function (module) { @@ -52,14 +57,13 @@ module.exports = { name: "manifest", minChunks: Infinity }), - new HtmlWebpackPlugin({ - template: './assets/index.underscore', // Load a custom template (ejs by default see the FAQ for details) + new HtmlWebpackPlugin(Object.assign({ + template: settings.src, title: 'Project Fauxton', filename: 'index.html', - development: false, - generationLabel: 'Fauxton', + generationLabel: 'Fauxton Release', generationDate: new Date().toISOString() - }), + }, settings.variables)), new ExtractTextPlugin("dashboard.assets/css/styles.[chunkhash].css"), ], @@ -107,7 +111,7 @@ module.exports = { "css-loader", "less-loader" ], - publicPath: '../' + publicPath: '../../' }), }, { From 444370296d12f4f8d8d4885d763ac16f2eb2d7f3 Mon Sep 17 00:00:00 2001 From: Garren Smith Date: Thu, 16 Mar 2017 11:37:10 +0200 Subject: [PATCH 6/8] clean up --- Gruntfile.js | 9 ++++----- tasks/fauxton.js | 9 --------- webpack.config.release.js | 14 +++++++------- webpack.config.test.js | 2 +- 4 files changed, 12 insertions(+), 22 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index b59f3a006..572823b73 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -226,8 +226,7 @@ module.exports = function (grunt) { grunt.registerTask('dependencies', ['get_deps', 'gen_load_addons:default']); // minify code and css, ready for release. - grunt.registerTask('build', ['copy:distDepsRequire', 'shell:webpackrelease', - 'template:release']); + grunt.registerTask('build', ['copy:distDepsRequire', 'shell:webpackrelease']); /* * Build the app in either dev, debug, or release mode */ @@ -238,13 +237,13 @@ module.exports = function (grunt) { // build a debug release grunt.registerTask('debug', ['clean', 'dependencies', "gen_initialize:development", - 'template:development', 'copy:debug']); + 'copy:debug']); grunt.registerTask('debugDev', ['clean', 'dependencies', "gen_initialize:development", - 'template:development', 'copy:debug', 'shell:webpack']); + 'copy:debug', 'shell:webpack']); grunt.registerTask('devSetup', ['dependencies', "gen_initialize:development", - 'template:development', 'copy:debug']); + 'copy:debug']); grunt.registerTask('devSetupWithClean', ['clean', 'devSetup']); grunt.registerTask('watchRun', ['clean:watch', 'dependencies', 'shell:stylecheck']); diff --git a/tasks/fauxton.js b/tasks/fauxton.js index 29c778e7d..e4c2f880d 100644 --- a/tasks/fauxton.js +++ b/tasks/fauxton.js @@ -15,15 +15,6 @@ module.exports = function (grunt) { fs = require('fs'), os = require('os'); - grunt.registerMultiTask('template', 'generates an html file from a specified template', function () { - console.log('template can be removed', this.data.src); - // var data = this.data, - // _ = grunt.util._, - // tmpl = _.template(grunt.file.read(data.src), null, data.variables); - - // grunt.file.write(data.dest, tmpl(data.variables)); - }); - grunt.registerMultiTask('get_deps', 'Fetch external dependencies', function () { grunt.log.writeln('Fetching external dependencies'); diff --git a/webpack.config.release.js b/webpack.config.release.js index 4674e22b8..99316c93a 100644 --- a/webpack.config.release.js +++ b/webpack.config.release.js @@ -39,13 +39,13 @@ module.exports = { }), // moment doesn't offer a modular API, so manually remove locale // see https://github.com/moment/moment/issues/2373 - // new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), - // new webpack.optimize.UglifyJsPlugin({ - // compress: { - // warnings: false - // }, - // sourceMap: true - // }), + new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), + new webpack.optimize.UglifyJsPlugin({ + compress: { + warnings: false + }, + sourceMap: true + }), new webpack.optimize.CommonsChunkPlugin({ name: 'vendor', // Specify the common bundle's name. minChunks: function (module) { diff --git a/webpack.config.test.js b/webpack.config.test.js index 8a98c9288..4e013024a 100644 --- a/webpack.config.test.js +++ b/webpack.config.test.js @@ -72,7 +72,7 @@ module.exports = { ] }, { - test: /\.css$/, + test: /\.css$/, use: [ "style-loader", "css-loader" From f16b53395c7d76c5f21b8c9b2992091da8b14765 Mon Sep 17 00:00:00 2001 From: Garren Smith Date: Tue, 21 Mar 2017 09:56:21 +0200 Subject: [PATCH 7/8] review fixes --- devserver.js | 32 ++++++++++++++++---------------- settings.json.default.json | 2 +- webpack.config.dev.js | 1 - webpack.config.test-dev.js | 1 - webpack.config.test.js | 1 - 5 files changed, 17 insertions(+), 20 deletions(-) diff --git a/devserver.js b/devserver.js index 4aca93109..dd8f32872 100644 --- a/devserver.js +++ b/devserver.js @@ -1,14 +1,14 @@ -var spawn = require('child_process').spawn; -var fs = require("fs"); -var webpack = require('webpack'); -var WebpackDev = require('webpack-dev-server'); -var config = require('./webpack.config.dev.js'); -var httpProxy = require('http-proxy'); -var path = require('path'); +const spawn = require('child_process').spawn; +const fs = require("fs"); +const webpack = require('webpack'); +const WebpackDev = require('webpack-dev-server'); +const config = require('./webpack.config.dev.js'); +const httpProxy = require('http-proxy'); +const path = require('path'); -var loadSettings = function () { - var fileName = './settings.json.default.json'; +const loadSettings = function () { + let fileName = './settings.json.default.json'; if (fs.existsSync('./settings.json')) { fileName = './settings.json'; } @@ -23,16 +23,16 @@ var loadSettings = function () { }; }; -var settings = loadSettings(); +const settings = loadSettings(); -var devSetup = function (cb) { +const devSetup = function (cb) { console.log('setup dev environment'); - var cmd = 'devSetupWithClean'; + const cmd = 'devSetupWithClean'; if (settings.noClean) { cmd = 'devSetup'; } - var grunt = spawn('grunt', [cmd]); + const grunt = spawn('grunt', [cmd]); grunt.stdout.on('data', (data) => { console.log(data.toString()); @@ -64,8 +64,8 @@ function getCspHeaders () { }; }; -var runWebpackServer = function () { - var proxy = httpProxy.createServer({ +const runWebpackServer = function () { + const proxy = httpProxy.createServer({ secure: false, changeOrigin: true, target: settings.proxy.target @@ -81,7 +81,7 @@ var runWebpackServer = function () { // don't explode on cancelled requests }); - var options = { + const options = { contentBase: path.join(__dirname, '/dist/debug/'), host: 'localhost', port: process.env.FAUXTON_PORT || 8000, diff --git a/settings.json.default.json b/settings.json.default.json index 2e97ae50b..fde5dada0 100644 --- a/settings.json.default.json +++ b/settings.json.default.json @@ -17,7 +17,7 @@ ], "template": { "development": { - "src": "assets/index.underscore", + "src": "./assets/index.underscore", "dest": "dist/debug/index.html", "variables": { "title": "Project Fauxton", diff --git a/webpack.config.dev.js b/webpack.config.dev.js index 693f5004e..89d3dbd55 100644 --- a/webpack.config.dev.js +++ b/webpack.config.dev.js @@ -95,7 +95,6 @@ module.exports = { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-tff&name=dashboard.assets/fonts/[name].[ext]' }, { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/fonts/[name].[ext]' }, - { test: /\.swf(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/[name].[ext]' }, { test: /\.png(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/img/[name].[ext]' }, { test: /\.gif(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/img/[name].[ext]' }, { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=image/svg+xml&name=dashboard.assets/img/[name].[ext]' } diff --git a/webpack.config.test-dev.js b/webpack.config.test-dev.js index c9d724512..cdbfefd0d 100644 --- a/webpack.config.test-dev.js +++ b/webpack.config.test-dev.js @@ -84,7 +84,6 @@ module.exports = { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-tff&name=dashboard.assets/fonts/[name].[ext]' }, { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/fonts/[name].[ext]' }, - { test: /\.swf(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/[name].[ext]' }, { test: /\.png(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/img/[name].[ext]' }, { test: /\.gif(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/img/[name].[ext]' }, { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=image/svg+xml&name=dashboard.assets/img/[name].[ext]' } diff --git a/webpack.config.test.js b/webpack.config.test.js index 4e013024a..8cb016f1b 100644 --- a/webpack.config.test.js +++ b/webpack.config.test.js @@ -89,7 +89,6 @@ module.exports = { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-tff&name=dashboard.assets/fonts/[name].[ext]' }, { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/fonts/[name].[ext]' }, - { test: /\.swf(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/[name].[ext]' }, { test: /\.png(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/img/[name].[ext]' }, { test: /\.gif(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader?name=dashboard.assets/img/[name].[ext]' }, { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=image/svg+xml&name=dashboard.assets/img/[name].[ext]' } From 614db1595bb3fad942207dc80b10ae91af8d7c3e Mon Sep 17 00:00:00 2001 From: Garren Smith Date: Tue, 21 Mar 2017 10:43:20 +0200 Subject: [PATCH 8/8] latest docker --- docker/dc.selenium.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/dc.selenium.yml b/docker/dc.selenium.yml index 5d1c3855b..f65f28409 100644 --- a/docker/dc.selenium.yml +++ b/docker/dc.selenium.yml @@ -8,7 +8,7 @@ services: couchdb: container_name: couchdb - image: klaemo/couchdb:2.0-dev@sha256:e9b71abaff6aeaa34ee28604c3aeb78f3a7c789ad74a7b88148e2ef78f1e3b21 + image: klaemo/couchdb:2.0-dev command: '--with-haproxy -a tester:testerpass' ports: - "5984:5984" \ No newline at end of file