Mercurial > hg > ugly-duckling
view build-prod.js @ 184:7643e60dc1dd
Half height.
author | Lucas Thompson <dev@lucas.im> |
---|---|
date | Wed, 22 Mar 2017 11:22:48 +0000 |
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);