const path = require('path'); const fs = require('fs'); // defaults var outputPath = [], entryPoints = [], externals = [], misc = [], loaders = []; var outputPathFile = './srcjs/config/output_path.json', entryPointsFile = './srcjs/config/entry_points.json', externalsFile = './srcjs/config/externals.json', miscFile = './srcjs/config/misc.json', loadersFile = './srcjs/config/loaders.json'; // Read config files if(fs.existsSync(outputPathFile)){ outputPath = fs.readFileSync(outputPathFile, 'utf8'); } if(fs.existsSync(entryPointsFile)){ entryPoints = fs.readFileSync(entryPointsFile, 'utf8'); } if(fs.existsSync(externalsFile)){ externals = fs.readFileSync(externalsFile, 'utf8'); } if(fs.existsSync(miscFile)){ misc = fs.readFileSync(miscFile, 'utf8'); } if(fs.existsSync(loadersFile)){ loaders = fs.readFileSync(loadersFile, 'utf8'); } if(fs.existsSync(loadersFile)){ loaders = fs.readFileSync(loadersFile, 'utf8'); } // parse loaders = JSON.parse(loaders); misc = JSON.parse(misc); externals = JSON.parse(externals); entryPoints = JSON.parse(entryPoints); // parse regex loaders.forEach((loader) => { loader.test = RegExp(loader.test); return(loader); }) // placeholder for plugins var plugins = [ ]; // define options var options = { entry: entryPoints, output: { filename: "[name].js", path: path.resolve(__dirname, JSON.parse(outputPath)), libraryTarget: "window", hashFunction: "xxhash64", }, externals: externals, module: { rules: loaders }, resolve: { extensions: ['.tsx', '.ts', '.js'], }, plugins: plugins }; // add misc if(misc.resolve) options.resolve = misc.resolve; // export module.exports = options;