There are several lessons that will build on top of this project. It is a fairly standard, small webpack bundled project. In this lesson we’ll explore the project a bit so you’re familiar with how things are set up for future lessons.

 

In Webpack 2, the config take a fucntion, which accept a env param points to system env.

const {resolve} = require('path')
module.exports = env => {
  return {
    entry: './js/app.js',
    output: {
      filename: 'bundle.js',
      path: resolve(__dirname, 'dist'),
      pathinfo: !env.prod,
    },
    context: resolve(__dirname, 'src'),
    devtool: env.prod ? 'source-map' : 'eval',
    bail: env.prod,
    module: {
      loaders: [
        {test: /\.js$/, loader: 'babel!eslint', exclude: /node_modules/},
        {test: /\.css$/, loader: 'style!css'},
      ],
    },
  }
}

 

Package.json scripts:

  "scripts": {
    "test": "karma start",
    "check-coverage": "istanbul check-coverage --statements 23 --branches 5 --functions 9 --lines 24",
    "watch:test": "npm test -- --auto-watch --no-single-run",
    "validate": "npm-run-all --parallel validate-webpack:* lint test --serial check-coverage",
    "validate-webpack:dev": "webpack-validator webpack.config.js --env.dev",
    "validate-webpack:prod": "webpack-validator webpack.config.js --env.prod",
    "clean-dist": "rimraf dist",
    "copy-files": "cpy src/index.html src/favicon.ico dist",
    "clean-and-copy": "npm run clean-dist && npm run copy-files",
    "prestart": "npm run clean-and-copy",
    "start": "webpack-dev-server --env.dev --content-base dist",
    "prebuild": "npm run clean-and-copy",
    "prebuild:prod": "npm run clean-and-copy",
    "build": "webpack --env.dev",
    "build:prod": "webpack --env.prod -p",
    "lint": "eslint .",
    "setup": "npm install && npm run validate"
  }