const webpack = require('webpack');
const { resolve } = require('path');
const jsOutput = {
filename: 'build.js',
path: resolve(__dirname),
publicPath: '/',
};
module.exports = {
mode: 'development',
// where the starting point is
context: resolve(__dirname, 'src'),
// where to look for the main page for entry
entry: [
'webpack-hot-middleware/client',
'./index.jsx',
],
// where to generate the bundle file in
output: jsOutput,
// tells webpack to only look at js or jsx files
resolve: {
extensions: ['.js', '.jsx'],
},
// where to use babel (or any other loader) to transpile the source before output (convert to es5)
module: {
// rules are objects can be more than one
rules: [
{
test: /\.jsx?$/,
exclude: /(node_modules|bower_components|public\/)/,
loader: 'babel-loader',
},
{
test: /\.jsx?$/,
exclude: /(node_modules|bower_components|public\/)/,
loader: 'babel-loader',
},
{
test: /\.scss$/,
exclude: /(node_modules|bower_components|public\/)/,
use: [{
loader: 'style-loader', // creates style nodes from JS strings
}, {
loader: 'css-loader', // translates CSS into CommonJS
}, {
loader: 'sass-loader', // compiles Sass to CSS
}],
},
{
test: /\.(png|jpg|)$/,
loader: 'url-loader',
options: {
fallback: 'file-loader',
},
},
],
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.NamedModulesPlugin(),
new webpack.NoEmitOnErrorsPlugin(),
],
};