UNPKG

@google/dscc-gen

Version:

Create component & connector projects with sane defaults.

77 lines (69 loc) 2.27 kB
// imports const path = require('path'); const webpack = require('webpack'); const CopyWebpackPlugin = require('copy-webpack-plugin'); const Promise = require('bluebird'); const fs = Promise.promisifyAll(require('fs')); // constants const DEV_BUCKET = process.env.npm_package_config_gcsDevBucket; const PROD_BUCKET = process.env.npm_package_config_gcsProdBucket; const JS_FILE = process.env.npm_package_config_jsFile; const CSS_FILE = process.env.npm_package_config_cssFile; const JSON_FILE = process.env.npm_package_config_jsonFile; const MANIFEST_FILE = 'manifest.json'; const buildOptions = (DEVMODE) => { // common options let webpackOptions = { entry: { // this is the viz source code main: path.resolve(__dirname, '../../', 'src', JS_FILE), }, output: { filename: JS_FILE, path: path.resolve(__dirname, '../../', 'build'), }, plugins: [ new CopyWebpackPlugin([ {from: path.resolve(__dirname, '../../', 'src', JSON_FILE), to: '.'}, {from: path.join('src', CSS_FILE), to: '.'}, ]), ], }; if (DEVMODE === true) { const devOptions = { mode: 'development', }; Object.assign(webpackOptions, devOptions); } else { const prodOptions = { mode: 'production', }; Object.assign(webpackOptions, prodOptions); } return webpackOptions; }; const buildViz = async (DEVMODE) => { const GCS_BUCKET = DEVMODE ? DEV_BUCKET : PROD_BUCKET; const encoding = 'utf-8'; const webpackOptions = buildOptions(DEVMODE); const compiler = webpack(webpackOptions); const compilerRun = Promise.promisify(compiler.run, {context: compiler}); var stats = await compilerRun.call(); try { const manifestSrc = path.resolve(__dirname, '../../', 'src', MANIFEST_FILE); const manifestDest = path.resolve( __dirname, '../../', 'build', MANIFEST_FILE ); var manifestContents = await fs.readFileAsync(manifestSrc, encoding); const newManifest = manifestContents .replace(/YOUR_GCS_BUCKET/g, GCS_BUCKET) .replace(/"DEVMODE_BOOL"/, DEVMODE); return fs.writeFileAsync(manifestDest, newManifest); } catch (err) { console.log('Unable to write manifest: ', err); } }; module.exports.buildViz = buildViz;