diff --git a/static/webpack.config.js b/static/webpack.config.js
new file mode 100644
index 0000000000000000000000000000000000000000..ed50843859600052aee3eb1f2964a720a1b96aab
--- /dev/null
+++ b/static/webpack.config.js
@@ -0,0 +1,65 @@
+var ExtractTextPlugin = require("extract-text-webpack-plugin");
+var HtmlWebpackPlugin = require("html-webpack-plugin");
+var path = require("path");
+var webpack = require("webpack");
+var projectTemplatesRoot = "../../pinaxcon/templates/";
+
+module.exports = {
+ context: path.resolve(__dirname, "src"),
+ entry: {
+ app: "./js/main.js"
+ },
+ output: {
+ path: path.resolve(__dirname, "dist"),
+ filename: "js/site.js?[hash]",
+ publicPath: "/site_media/static"
+ },
+ module: {
+ loaders: [
+ {
+ test: /\.(gif|png|ico|jpg|svg)$/,
+ include: [
+ path.resolve(__dirname, "src/images")
+ ],
+ loader: "file-loader?name=/images/[name].[ext]"
+ },
+ { test: /\.less$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader!less-loader") },
+ {
+ test: /\.(woff|woff2|ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
+ include: [
+ path.resolve(__dirname, "/src/fonts"),
+ path.resolve(__dirname, "../node_modules")
+ ],
+ loader: "file-loader?name=/fonts/[name].[ext]?[hash]"
+ },
+ { test: /\.jsx?$/, loader: "babel-loader", query: {compact: false} },
+ ]
+ },
+ resolve: {
+ extensions: ["", ".js", ".jsx"],
+ },
+ plugins: [
+ new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
+ new ExtractTextPlugin("css/site.css?[hash]"),
+ new HtmlWebpackPlugin({
+ filename: projectTemplatesRoot + "_styles.html",
+ templateContent: function(templateParams, compilation) {
+ var link = "";
+ for (var css in templateParams.htmlWebpackPlugin.files.css) {
+ link += "\n"
+ }
+ return link;
+ }
+ }),
+ new HtmlWebpackPlugin({
+ filename: projectTemplatesRoot + "_scripts.html",
+ templateContent: function(templateParams, compilation) {
+ var script = "";
+ for (var js in templateParams.htmlWebpackPlugin.files.js) {
+ script += "\n"
+ }
+ return script;
+ }
+ })
+ ]
+};