hunk.code_window:   const extraPlugins = [];
     if (testConfig.codeCoverage) {
       extraRules.push({
         test: /\.(js|ts)$/, loader: 'sourcemap-istanbul-instrumenter-loader',
         enforce: 'post',
         exclude: [
           /\.(e2e|spec)\.ts$/,
           /node_modules/
  
hunk.labels: keep keep keep keep replace keep keep keep keep
hunk.after_edit:       test: /\.(js|ts)$/, loader: 'istanbul-instrumenter-loader',
  
hunk.file_path: packages/@angular/cli/models/webpack-configs/test.js
hunk.type: replace
file: 'use strict';
  
  const fs = require('fs');
  const glob = require('glob');
  const path = require('path');
  
  const packageRoot = path.join(__dirname, '../packages');
  
  // All the supported packages. Go through the packages directory and create a map of
  // name => fullPath.
  const packages =
    glob.sync(path.join(packageRoot, '**/package.json'))
      .filter(p => !p.match(/blueprints/))
      .map(pkgPath => path.relative(packageRoot, path.dirname(pkgPath)))
      .map(pkgName => {
        return { name: pkgName, root: path.join(packageRoot, pkgName) };
      })
      .reduce((packages, pkg) => {
        let pkgJson = JSON.parse(fs.readFileSync(path.join(pkg.root, 'package.json'), 'utf8'));
        let name = pkgJson['name'];
  
        packages[name] = {
          dist: path.join(__dirname, '../dist', pkg.name),
          packageJson: path.join(pkg.root, 'package.json'),
          root: pkg.root,
          relative: path.relative(path.dirname(__dirname), pkg.root),
          main: path.resolve(pkg.root, 'src/index.ts')
        };
        return packages;
      }, {});
  
  
  module.exports = packages;
  
  
  // If we run this from the command line, just output the list of modules neatly formatted.
  if (require.main === module) {
    // eslint-disable-next-line no-console
    console.log(JSON.stringify(packages, null, 2));
  }
  