diff --git a/bikeshop_project/server.js b/bikeshop_project/server.js new file mode 100644 index 0000000..fbde772 --- /dev/null +++ b/bikeshop_project/server.js @@ -0,0 +1,16 @@ +var webpack = require('webpack') +var WebpackDevServer = require('webpack-dev-server') +var config = require('./webpack.dev.config') + +new WebpackDevServer(webpack(config), { + publicPath: config.output.publicPath, + hot: true, + inline: true, + historyApiFallback: true +}).listen(3000, '0.0.0.0', function (err, result) { + if (err) { + console.log(err) + } + + console.log('Listening at 0.0.0.0:3000') +}) \ No newline at end of file diff --git a/bikeshop_project/webpack.base.config.js b/bikeshop_project/webpack.base.config.js new file mode 100644 index 0000000..1337d48 --- /dev/null +++ b/bikeshop_project/webpack.base.config.js @@ -0,0 +1,36 @@ +var path = require("path") +var webpack = require('webpack') +var BundleTracker = require('webpack-bundle-tracker') + +const autoprefixer = require('autoprefixer'); + +module.exports = { + context: __dirname, + + entry: './assets/js/index', + + output: { + path: path.resolve('./assets/bundles/'), + filename: "[name]-[hash].js" + }, + + plugins: [ + + ], // add all common plugins here + + module: { + loaders: [ + + ] + }, + + resolve: { + modulesDirectories: [ + 'node_modules', + 'bower_components', + path.resolve(__dirname, './node_modules') + ], + extensions: ['', '.js', '.jsx', '.scss'] + }, + postcss: [autoprefixer] +} \ No newline at end of file diff --git a/bikeshop_project/webpack.dev.config.js b/bikeshop_project/webpack.dev.config.js new file mode 100644 index 0000000..b8ed3f5 --- /dev/null +++ b/bikeshop_project/webpack.dev.config.js @@ -0,0 +1,42 @@ +var path = require("path") +var webpack = require('webpack') +var BundleTracker = require('webpack-bundle-tracker') +const ExtractTextPlugin = require('extract-text-webpack-plugin'); + +var config = require('./webpack.base.config.js') + +// Use webpack dev server +config.entry = [ + 'webpack-dev-server/client?http://localhost:3000', + 'webpack/hot/only-dev-server', + './assets/js/index' +] + +// override django's STATIC_URL for webpack bundles +config.output.publicPath = 'http://localhost:3000/assets/bundles/' + +// Add HotModuleReplacementPlugin and BundleTracker plugins +config.plugins = config.plugins.concat([ + new webpack.HotModuleReplacementPlugin(), + new webpack.NoErrorsPlugin(), + new BundleTracker({filename: './webpack-stats.json'}), + new ExtractTextPlugin('react-toolbox.css', {allChunks: true}), +]) + +// Add a loader for JSX files with react-hot enabled +config.module.loaders.push( + { + test: /\.jsx?$/, + exclude: /node_modules/, + loader: 'babel-loader', + query: { + presets: ['es2015', 'stage-0', 'react'] + } + }, + { + test: /(\.scss|\.css)$/, + loader: ExtractTextPlugin.extract('style', 'css?sourceMap&modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]!postcss!sass?sourceMap!toolbox') + } +) + +module.exports = config \ No newline at end of file