view build-prod.js @ 365:9ba7d304a99d

Add css classes to the container divs for ngIf and ngSwitch to ensure they fill the height of their parents. The template needs tidying up to avoid these unnecessary divs.
author Lucas Thompson <dev@lucas.im>
date Tue, 30 May 2017 18:13:12 +0100
parents efa231b10580
children 7005b0d11509
line wrap: on
line source
/**
 * Created by lucas on 20/03/2017.
 */
'use strict';
const webpack = require('webpack');
const cli = require('@angular/cli');
const fs = require('fs');
webpack.optimize = Object.assign({}, webpack.optimize, {
  UglifyJsPlugin: function () { this.apply = () => {}; }
});

const bundlePrefixes = [
  'main',
  'polyfills',
  'scripts',
  'styles',
  'vendor',
  'inline'
];

const distDir = './dist';
const tmpDir = `${distDir}/gh-pages`;

const getGeneratedBundleNames = () => {
  return new Promise((res, rej) => {
    fs.readdir(distDir, (err, files) => {
      if (err) {
        rej(1);
      } else {
        res(files.filter(file => bundlePrefixes.find(
          prefix => file.startsWith(prefix)
        )));
      }
    })
  });
};

const throwIfBuildReportedError = (result) => {
  return new Promise((res, rej) => {
    if (typeof result === 'object' && result.exitCode != null) {
      if (result.exitCode === 0) {
        res();
      } else {
        rej(result.exitCode);
      }
    } else if(typeof result === 'number') {
      if (result === 0) {
        res();
      } else {
        rej(result);
      }
    } else {
      res();
    }
  });
};

const copyToTmpDir = (bundles) => {
  // TODO should really handle errors for all of this
  // and it could be async but i'm too lazy & it doesn't really matter for this
  if (!fs.existsSync(tmpDir)){
    fs.mkdirSync(tmpDir);
  }
  for (let bundle of bundles) {
    const parts = bundle.split('.');
    const bundlePrefix = parts[0];
    const bundleExtension = parts[parts.length - 1];
    const contents = fs.readFileSync(`${distDir}/${bundle}`);
    fs.writeFileSync(
      `${tmpDir}/${bundlePrefix}.bundle.${bundleExtension}`,
      contents
    );
  }
};

cli({
  cliArgs: ['build', '--prod', '--aot', 'false', '-bh', '/ugly-duckling/'],
  inputStream: process.stdin,
  outputStream: process.stdout
})
.then(throwIfBuildReportedError)
.then(getGeneratedBundleNames)
.then(copyToTmpDir)
.then(process.exit)
.catch(process.exit);