diff --git a/src/commands/start-client.js b/src/commands/start-client.js index f05c1824..a9cff15e 100644 --- a/src/commands/start-client.js +++ b/src/commands/start-client.js @@ -1,3 +1,4 @@ +const fs = require("fs"); const path = require("path"); const webpack = require("webpack"); const process = require("process"); @@ -7,7 +8,7 @@ const WebpackIsomorphicToolsPlugin = require("webpack-isomorphic-tools/plugin"); const webpackSharedConfig = require("../config/webpack-shared-config"); const detectEnvironmentVariables = require("../lib/detectEnvironmentVariables"); const getWebpackAdditions = require("../lib/getWebpackAdditions").default; -const { additionalLoaders, additionalPreLoaders, vendor } = getWebpackAdditions(); +const { additionalLoaders, additionalPreLoaders, vendor, plugins } = getWebpackAdditions(); const logger = require("../lib/logger"); const logsColorScheme = require("../lib/logsColorScheme"); @@ -100,7 +101,7 @@ const compiler = webpack({ new webpack.IgnorePlugin(/\.server(\.js)?$/), new webpack.optimize.CommonsChunkPlugin("vendor", "vendor.bundle.js"), new webpack.optimize.AggressiveMergingPlugin() - ].concat(environmentPlugins, webpackSharedConfig.plugins), + ].concat(environmentPlugins, webpackSharedConfig.plugins, plugins), resolve: { ...webpackSharedConfig.resolve } @@ -137,6 +138,7 @@ module.exports = function (buildOnly) { else { logger.info("Bundling assets…"); compiler.run((error, stats) => { + fs.writeFileSync("webpack-bundle-stats.json", JSON.stringify(stats.toJson())); const errors = stats.toJson().errors; if (errors.length) { errors.forEach((e) => { diff --git a/src/lib/getWebpackAdditions.js b/src/lib/getWebpackAdditions.js index 37b7c288..d6fc954c 100644 --- a/src/lib/getWebpackAdditions.js +++ b/src/lib/getWebpackAdditions.js @@ -42,7 +42,8 @@ export default function (isomorphic=false) { let userAdditions = { additionalLoaders: [], additionalPreLoaders: [], - vendor: [] + vendor: [], + plugins: [] }; // Babel will try to resolve require statements ahead of time which will cause an error @@ -51,11 +52,12 @@ export default function (isomorphic=false) { try { const webpackAdditionsPath = path.join(process.cwd(), "src", "config", "webpack-additions.js"); fs.statSync(webpackAdditionsPath); - const { additionalLoaders, additionalPreLoaders, vendor } = require(webpackAdditionsPath); + const { additionalLoaders, additionalPreLoaders, vendor, plugins } = require(webpackAdditionsPath); userAdditions = { additionalLoaders: isomorphic ? additionalLoaders : prepareUserAdditionsForWebpack(additionalLoaders), additionalPreLoaders: isomorphic ? additionalPreLoaders : prepareUserAdditionsForWebpack(additionalPreLoaders), - vendor: vendor || [] + vendor: vendor || [], + plugins: plugins || [] }; } catch (e) { diff --git a/templates/new/_gitignore b/templates/new/_gitignore index 6375ee66..ae6283a9 100644 --- a/templates/new/_gitignore +++ b/templates/new/_gitignore @@ -1,5 +1,6 @@ # Output from webpack asset bunlding webpack-assets.json +webpack-bundle-stats.json # Logs logs diff --git a/templates/new/src/config/.entry.js b/templates/new/src/config/.entry.js index dcabd598..845cd31b 100644 --- a/templates/new/src/config/.entry.js +++ b/templates/new/src/config/.entry.js @@ -7,7 +7,8 @@ import { render } from "react-dom"; import "../../Index.js"; import { Root, getHttpClient } from "gluestick-shared"; -import { match, browserHistory as history } from "react-router"; +import match from "react-router/lib/match"; +import browserHistory from "react-router/lib/browserHistory"; import routes from "./routes"; import store from "./.store"; import { StyleRoot } from "radium"; @@ -44,7 +45,7 @@ export default class Entry extends Component { Entry.start = function () { const newStore = store(httpClient); - match({ history, routes: getRoutes(newStore) }, (error, redirectLocation, renderProps) => { + match({ history: browserHistory, routes: getRoutes(newStore) }, (error, redirectLocation, renderProps) => { render(, document.getElementById("main")); }); };