pixelplanet/scripts/build.js

51 lines
1.4 KiB
JavaScript
Raw Normal View History

/*
* We got so many locals that building them all in one go can lead to out-of-memory error
* Lets split that here
*/
import webpack from 'webpack';
import serverConfig from '../webpack.config.server.babel.js';
import clientConfig, {getAllAvailableLocals} from '../webpack.config.client.babel.js';
function compile(webpackConfig) {
return new Promise((resolve, reject) => {
webpack(webpackConfig).run((err, stats) => {
if (err) {
return reject(err);
}
const statsConfig = (webpackConfig.length) ? webpackConfig[0].stats : webpackConfig.stats;
console.log(stats.toString(statsConfig))
return resolve();
});
});
}
async function buildProduction() {
// server files
console.log('-----------------------------');
console.log(`Build server...`);
console.log('-----------------------------');
await compile(serverConfig({
development: false,
extract: false,
}));
// client files
const langs = getAllAvailableLocals();
console.log('Available locales:', langs);
const st = Date.now();
for(let i = 0; i < langs.length; i += 1) {
const lang = langs[i];
console.log(`Build client for locale ${lang}...`);
console.log('-----------------------------');
await compile(clientConfig({
development: false,
analyze: false,
extract: false,
locale: lang,
}));
}
console.log(`Finished building in ${(Date.now() - st) / 1000}s`);
}
buildProduction();