annotate build-prod.js @ 350:524f5cd75737

Split AnalysisItem out into individual types for root audio items and features. This is messy as is, these need revising and should perhaps be actual concrete types with methods.
author Lucas Thompson <dev@lucas.im>
date Fri, 26 May 2017 12:59:41 +0100
parents efa231b10580
children 7005b0d11509
rev   line source
dev@138 1 /**
dev@138 2 * Created by lucas on 20/03/2017.
dev@138 3 */
dev@138 4 'use strict';
dev@138 5 const webpack = require('webpack');
dev@138 6 const cli = require('@angular/cli');
dev@138 7 const fs = require('fs');
dev@138 8 webpack.optimize = Object.assign({}, webpack.optimize, {
dev@138 9 UglifyJsPlugin: function () { this.apply = () => {}; }
dev@138 10 });
dev@138 11
dev@138 12 const bundlePrefixes = [
dev@138 13 'main',
dev@138 14 'polyfills',
dev@138 15 'scripts',
dev@138 16 'styles',
dev@138 17 'vendor',
dev@138 18 'inline'
dev@138 19 ];
dev@138 20
dev@138 21 const distDir = './dist';
dev@138 22 const tmpDir = `${distDir}/gh-pages`;
dev@138 23
dev@138 24 const getGeneratedBundleNames = () => {
dev@138 25 return new Promise((res, rej) => {
dev@138 26 fs.readdir(distDir, (err, files) => {
dev@138 27 if (err) {
dev@138 28 rej(1);
dev@138 29 } else {
dev@138 30 res(files.filter(file => bundlePrefixes.find(
dev@138 31 prefix => file.startsWith(prefix)
dev@138 32 )));
dev@138 33 }
dev@138 34 })
dev@138 35 });
dev@138 36 };
dev@138 37
dev@138 38 const throwIfBuildReportedError = (result) => {
dev@138 39 return new Promise((res, rej) => {
dev@138 40 if (typeof result === 'object' && result.exitCode != null) {
dev@138 41 if (result.exitCode === 0) {
dev@138 42 res();
dev@138 43 } else {
dev@138 44 rej(result.exitCode);
dev@138 45 }
dev@138 46 } else if(typeof result === 'number') {
dev@138 47 if (result === 0) {
dev@138 48 res();
dev@138 49 } else {
dev@138 50 rej(result);
dev@138 51 }
dev@138 52 } else {
dev@138 53 res();
dev@138 54 }
dev@138 55 });
dev@138 56 };
dev@138 57
dev@138 58 const copyToTmpDir = (bundles) => {
dev@138 59 // TODO should really handle errors for all of this
dev@138 60 // and it could be async but i'm too lazy & it doesn't really matter for this
dev@138 61 if (!fs.existsSync(tmpDir)){
dev@138 62 fs.mkdirSync(tmpDir);
dev@138 63 }
dev@138 64 for (let bundle of bundles) {
dev@138 65 const parts = bundle.split('.');
dev@138 66 const bundlePrefix = parts[0];
dev@138 67 const bundleExtension = parts[parts.length - 1];
dev@138 68 const contents = fs.readFileSync(`${distDir}/${bundle}`);
dev@138 69 fs.writeFileSync(
dev@138 70 `${tmpDir}/${bundlePrefix}.bundle.${bundleExtension}`,
dev@138 71 contents
dev@138 72 );
dev@138 73 }
dev@138 74 };
dev@138 75
dev@138 76 cli({
dev@138 77 cliArgs: ['build', '--prod', '--aot', 'false', '-bh', '/ugly-duckling/'],
dev@138 78 inputStream: process.stdin,
dev@138 79 outputStream: process.stdout
dev@138 80 })
dev@138 81 .then(throwIfBuildReportedError)
dev@138 82 .then(getGeneratedBundleNames)
dev@138 83 .then(copyToTmpDir)
dev@138 84 .then(process.exit)
dev@138 85 .catch(process.exit);