diff --git a/package.json b/package.json index 75a1be19..e8ae4094 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ ] }, "devDependencies": { - "appcache-webpack-plugin": "^1.2.1", + "appcache-webpack-plugin": "^1.3.0", "babel-core": "*", "babel-eslint": "*", "babel-jest": "*", @@ -68,9 +68,9 @@ "eslint-plugin-react": "^4.0.0", "expose-loader": "^0.7.1", "express": "^4.13.3", - "extract-text-webpack-plugin": "^0.9.1", + "extract-text-webpack-plugin": "2.0.0", "file-loader": "^0.8.4", - "html-webpack-plugin": "^1.7.0", + "html-webpack-plugin": "^2.28.0", "jest-cli": "^16.0.1", "jsen": "^0.6.0", "json-loader": "^0.5.3", @@ -83,8 +83,8 @@ "rollup-plugin-node-resolve": "2", "style-loader": "^0.13.0", "url-loader": "^0.5.6", - "webpack": "^1.9.6", - "webpack-dev-server": "^1.14.0" + "webpack": "^2.2.1", + "webpack-dev-server": "^2.4.1" }, "dependencies": { "babel-polyfill": "*", diff --git a/src/index.html b/src/index.ejs similarity index 64% rename from src/index.html rename to src/index.ejs index d6742abf..27897d2a 100644 --- a/src/index.html +++ b/src/index.ejs @@ -1,9 +1,9 @@ - + > Coriolis EDCD Edition - + @@ -24,22 +24,22 @@ - {% if (o.htmlWebpackPlugin.options.uaTracking) { %} + <% if (htmlWebpackPlugin.options.uaTracking) { %> - {% } %} + <% } %>
- - + + diff --git a/webpack.config.dev.js b/webpack.config.dev.js index 0c2f06bb..27789b0e 100644 --- a/webpack.config.dev.js +++ b/webpack.config.dev.js @@ -27,7 +27,7 @@ module.exports = { }, resolve: { // When requiring, you don't need to add these extensions - extensions: ['', '.js', '.jsx', '.json', '.less'] + extensions: ['.js', '.jsx', '.json', '.less'] }, output: { path: path.join(__dirname, 'build'), @@ -36,30 +36,34 @@ module.exports = { }, plugins: [ new CopyDirPlugin(path.join(__dirname, 'src/.htaccess'), ''), - new webpack.optimize.CommonsChunkPlugin('lib', 'lib.js'), + new webpack.optimize.CommonsChunkPlugin({ + name: 'lib', + filename: 'lib.js' + }), new HtmlWebpackPlugin({ inject: false, - template: path.join(__dirname, "src/index.html"), + template: path.join(__dirname, "src/index.ejs"), version: pkgJson.version, gapiKey: process.env.CORIOLIS_GAPI_KEY || '', }), - new ExtractTextPlugin('app.css', { + new ExtractTextPlugin({ + filename: 'app.css', + disable: false, allChunks: true }), new webpack.HotModuleReplacementPlugin(), new webpack.NoErrorsPlugin() ], module: { - loaders: [ - { test: /\.css$/, loader: ExtractTextPlugin.extract('style-loader','css-loader') }, - { test: /\.less$/, loader: ExtractTextPlugin.extract('style-loader','css-loader!less-loader') }, - { test: /\.(js|jsx)$/, loaders: [ 'babel' ], include: path.join(__dirname, 'src') }, - { test: /\.json$/, loader: 'json-loader' }, - { test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/font-woff' }, - { test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/font-woff' }, - { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/octet-stream' }, - { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file' }, - { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=image/svg+xml' } + rules: [ + { test: /\.css$/, loader: ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader'}) }, + { test: /\.less$/, loader: ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader!less-loader'}) }, + { test: /\.(js|jsx)$/, loaders: [ 'babel-loader' ], include: path.join(__dirname, 'src') }, + { test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff' }, + { test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff' }, + { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/octet-stream' }, + { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader' }, + { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=image/svg+xml' } ] } }; diff --git a/webpack.config.prod.js b/webpack.config.prod.js index 8c8a66ba..59704c3e 100644 --- a/webpack.config.prod.js +++ b/webpack.config.prod.js @@ -29,7 +29,7 @@ module.exports = { lib: ['babel-polyfill', 'd3', 'react', 'react-dom', 'classnames', 'fbemitter', 'lz-string'] }, resolve: { - extensions: ['', '.js', '.jsx', '.json', '.less'], + extensions: ['.js', '.jsx', '.json', '.less'], alias: { 'd3': d3Path, 'react': reactPath, @@ -45,12 +45,16 @@ module.exports = { }, plugins: [ new webpack.optimize.UglifyJsPlugin({ + sourceMap: true, mangle: { except: [] }, 'screw-ie8': true }), - new webpack.optimize.CommonsChunkPlugin('lib', 'lib.[chunkhash:6].js'), + new webpack.optimize.CommonsChunkPlugin({ + name: 'lib', + filename: 'lib.[chunkhash:6].js' + }), new HtmlWebpackPlugin({ inject: false, appCache: 'coriolis.appcache', @@ -64,12 +68,14 @@ module.exports = { removeScriptTypeAttributes: true, removeStyleLinkTypeAttributes: true }, - template: path.join(__dirname, "src/index.html"), + template: path.join(__dirname, "src/index.ejs"), uaTracking: process.env.CORIOLIS_UA_TRACKING || '', gapiKey: process.env.CORIOLIS_GAPI_KEY || '', version: pkgJson.version }), - new ExtractTextPlugin('[contenthash:6].css', { + new ExtractTextPlugin({ + filename: '[contenthash:6].css', + disable: false, allChunks: true }), new CopyDirPlugin(path.join(__dirname, 'src/schemas'), 'schemas'), @@ -84,22 +90,21 @@ module.exports = { }) ], module: { - noParse: [d3Path, reactPath, lzStringPath], - loaders: [ + noParse: /.*\.min\.js$/, + rules: [ // Expose non-parsed globally scoped libs - { test: reactPath, loader: "expose?React" }, - { test: d3Path, loader: "expose?d3" }, - { test: lzStringPath, loader: "expose?LZString" }, + { test: reactPath, loader: "expose-loader?React" }, + { test: d3Path, loader: "expose-loader?d3" }, + { test: lzStringPath, loader: "expose-loader?LZString" }, - { test: /\.css$/, loader: ExtractTextPlugin.extract('style-loader','css-loader') }, - { test: /\.less$/, loader: ExtractTextPlugin.extract('style-loader','css-loader!less-loader') }, - { test: /\.(js|jsx)$/, loaders: [ 'babel' ], include: path.join(__dirname, 'src') }, - { test: /\.json$/, loader: 'json-loader' }, - { test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/font-woff' }, - { test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/font-woff' }, - { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/octet-stream' }, - { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file' }, - { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=image/svg+xml' } + { test: /\.css$/, loader: ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader'}) }, + { test: /\.less$/, loader: ExtractTextPlugin.extract({ fallback: 'style-loader',use: 'css-loader!less-loader'}) }, + { test: /\.(js|jsx)$/, loaders: [ 'babel-loader' ], include: path.join(__dirname, 'src') }, + { test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff' }, + { test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff' }, + { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/octet-stream' }, + { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader' }, + { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=image/svg+xml' } ] } };