const path = require('path'); const webpack = require('webpack'); const ScratchWebpackConfigBuilder = require('scratch-webpack-configuration'); const baseConfig = new ScratchWebpackConfigBuilder( { rootPath: path.resolve(__dirname), enableReact: false, enableTs: true, shouldSplitChunks: false }) .setTarget('browserslist') .merge({ resolve: { fallback: { Buffer: require.resolve('buffer/') } } }); if (!process.env.CI) { baseConfig.addPlugin(new webpack.ProgressPlugin()); } // Web-compatible const webConfig = baseConfig.clone() .merge({ output: { library: 'ScratchStorage', libraryTarget: 'umd', path: path.resolve(__dirname, 'dist', 'web'), filename: '[name].js', clean: false } }); const webNonMinConfig = webConfig.clone() .merge({ entry: { 'scratch-storage': path.join(__dirname, './src/index.ts') }, optimization: { minimize: false } }); const webMinConfig = webConfig.clone() .merge({ entry: { 'scratch-storage.min': path.join(__dirname, './src/index.ts') }, optimization: { minimize: true } }); // Node-compatible const nodeConfig = baseConfig.clone() .merge({ entry: { 'scratch-storage': path.join(__dirname, './src/index.ts') }, output: { library: 'ScratchStorage', libraryTarget: 'commonjs2', path: path.resolve(__dirname, 'dist', 'node'), filename: '[name].js', clean: false } }) .addExternals(['base64-js', 'js-md5', 'localforage', 'text-encoding']); module.exports = [webNonMinConfig.get(), webMinConfig.get(), nodeConfig.get()];