UNPKG

@viewdo/dxp-story-cli

Version:
56 lines (44 loc) 1.65 kB
const fs = require('fs'); const colors = require('colors'); function JSONConfigPlugin(buildInfo) { this.buildInfo = buildInfo; } const evalCode = (source) => { //console.log(source) const results = eval(source); return results.default(); } JSONConfigPlugin.prototype.apply = function (compiler) { compiler.plugin('emit', (compilation, cb) => { const { buildFile, buildPath, serve } = this.buildInfo; const { chunks = [] } = compilation; chunks.forEach(chunk => { chunk.files.forEach(filename => { if (filename === '_json-evaluator.js') { const source = compilation.assets[filename].source(); let jsonData = {}; try { jsonData = evalCode(source); } catch (err) { console.log(colors.red(err)); } if (serve) { const content = JSON.stringify(jsonData, null, 2); compilation.assets[`${buildPath}/${buildFile}`] = { source: () => { return Buffer.from(content); }, size: () => { return content.length * 4; } }; } else { fs.writeFileSync(buildFile, JSON.stringify(jsonData, null, 2)); } } }) }); cb(); }) } module.exports = JSONConfigPlugin;