var CopyWebpackPlugin = require('copy-webpack-plugin'); var defaultsDeep = require('lodash.defaultsdeep'); var path = require('path'); var webpack = require('webpack'); var base = { devServer: { contentBase: path.resolve(__dirname, 'playground'), host: '0.0.0.0', port: process.env.PORT || 8073 }, module: { loaders: [ { test: /\.json$/, loader: 'json-loader' } ] }, plugins: [ new webpack.optimize.UglifyJsPlugin({ include: /\.min\.js$/, minimize: true, compress: { warnings: false } }) ] }; module.exports = [ // Web-compatible, playground defaultsDeep({}, base, { entry: { 'vm': './src/index.js', 'vm.min': './src/index.js' }, output: { path: __dirname, filename: '[name].js' }, module: { loaders: base.module.loaders.concat([ { test: require.resolve('./src/index.js'), loader: 'expose?VirtualMachine' } ]) } }), // Webpack-compatible defaultsDeep({}, base, { entry: { dist: './src/index.js' }, output: { library: 'VirtualMachine', libraryTarget: 'commonjs2', path: __dirname, filename: '[name].js' } }), // Playground defaultsDeep({}, base, { entry: { vm: './src/index.js', vendor: [ // FPS counter 'stats.js/build/stats.min.js', // Syntax highlighter 'highlightjs/highlight.pack.min.js', // Scratch Blocks 'scratch-blocks/dist/vertical.js', // Renderer 'scratch-render', // Audio 'scratch-audio' ] }, output: { path: path.resolve(__dirname, 'playground'), filename: '[name].js' }, module: { loaders: base.module.loaders.concat([ { test: require.resolve('./src/index.js'), loader: 'expose?VirtualMachine' }, { test: require.resolve('stats.js/build/stats.min.js'), loader: 'script' }, { test: require.resolve('highlightjs/highlight.pack.min.js'), loader: 'script' }, { test: require.resolve('scratch-blocks/dist/vertical.js'), loader: 'expose?Blockly' }, { test: require.resolve('scratch-render'), loader: 'expose?RenderWebGL' }, { test: require.resolve('scratch-audio'), loader: 'expose?AudioEngine' } ]) }, plugins: base.plugins.concat([ new CopyWebpackPlugin([{ from: 'node_modules/scratch-blocks/media', to: 'media' }, { from: 'node_modules/highlightjs/styles/zenburn.css' }]) ]) }) ];