Skip to content
Snippets Groups Projects
webpack.config.js 1.94 KiB
Newer Older
Hermann's avatar
Hermann committed
const publicPath = '/dist';

const webpack = require('webpack');

Hermann's avatar
Hermann committed
const config = {
  context: `${__dirname}/src`, // `__dirname` is root of project

  entry: './index.js',

  output: {
    path: `${__dirname}/dist`, // `dist` is the destination
    filename: 'bundle.js',
  },

  // To run development server
  devServer: {
    contentBase: __dirname,
    publicPath,
    compress: true,
    port: 9000,
    hot: true,
    index: 'index.html',
    historyApiFallback: {
      index: 'index.html',
    },
  plugins: [
    new webpack.ProvidePlugin({
      $: 'jquery',
      jQuery: 'jquery',
      'windows.jQuery': 'jquery',
    }),
  ],

Hermann's avatar
Hermann committed
  module: {
    rules: [
      {
        test: /\.js$/,
        enforce: "pre",
        exclude: /node_modules/,
        loader: 'eslint-loader',
        options: {
          emitWarning: true // don't fail the build for linting errors
        }
      },
      {
        test: /\.js$/, // Check for all js files
        include: [
          path.resolve(__dirname, './src'),
          path.resolve(__dirname, 'node_modules/@material'),
        ],
Hermann's avatar
Hermann committed
        use: [{
          loader: 'babel-loader',
          options: {
            presets: ['env'],
            plugins: ['transform-object-rest-spread'],
          },
Hermann's avatar
Hermann committed
        }],
      },
      {
        test: /\.(png|jpe?g|gif|svg)$/,
        use: [
          {
            loader: 'file-loader',
            options: {
              publicPath,
            },
          },
        ],
      },
      {
        test: /node_modules\/announcetool.*\.(html|css)$/,
        use: [
          {
            loader: 'file-loader',
            options: {
              publicPath,
            },
          },
        ],
      },
  // Dynamically include config
  resolve: {
    alias: {
      networkConfig: `${__dirname}/src/networkConfig.json`,
    },
Hermann's avatar
Hermann committed
  },

  devtool: 'eval-source-map', // Default development sourcemap
};

module.exports = config;