Spaces:
Build error
Build error
const CopyWebpackPlugin = require('copy-webpack-plugin'); | |
const defaultsDeep = require('lodash.defaultsdeep'); | |
const path = require('path'); | |
const base = { | |
mode: process.env.NODE_ENV === 'production' ? 'production' : 'development', | |
devServer: { | |
contentBase: false, | |
host: '0.0.0.0', | |
port: process.env.PORT || 8073 | |
}, | |
devtool: 'cheap-module-source-map', | |
output: { | |
library: 'VirtualMachine', | |
filename: '[name].js' | |
}, | |
module: { | |
rules: [{ | |
test: /\.js$/, | |
loader: 'babel-loader', | |
include: path.resolve(__dirname, 'src'), | |
query: { | |
presets: [['@babel/preset-env']] | |
} | |
}, | |
{ | |
test: /\.mp3$/, | |
loader: 'file-loader', | |
options: { | |
outputPath: 'media/music/' | |
} | |
}] | |
}, | |
plugins: [] | |
}; | |
module.exports = [ | |
// Web-compatible | |
defaultsDeep({}, base, { | |
target: 'web', | |
entry: { | |
'scratch-vm': './src/index.js', | |
'scratch-vm.min': './src/index.js' | |
}, | |
output: { | |
libraryTarget: 'umd', | |
path: path.resolve('dist', 'web') | |
}, | |
module: { | |
rules: base.module.rules.concat([ | |
{ | |
test: require.resolve('./src/index.js'), | |
loader: 'expose-loader?VirtualMachine' | |
} | |
]) | |
} | |
}), | |
// Node-compatible | |
defaultsDeep({}, base, { | |
target: 'node', | |
entry: { | |
'scratch-vm': './src/index.js' | |
}, | |
output: { | |
libraryTarget: 'commonjs2', | |
path: path.resolve('dist', 'node') | |
}, | |
externals: { | |
'decode-html': true, | |
'format-message': true, | |
'htmlparser2': true, | |
'immutable': true, | |
'jszip': true, | |
'minilog': true, | |
'scratch-parser': true, | |
'socket.io-client': true, | |
'text-encoding': true | |
} | |
}), | |
// Playground | |
defaultsDeep({}, base, { | |
target: 'web', | |
entry: { | |
'benchmark': './src/playground/benchmark', | |
'video-sensing-extension-debug': './src/extensions/scratch3_video_sensing/debug' | |
}, | |
output: { | |
path: path.resolve(__dirname, 'playground'), | |
filename: '[name].js' | |
}, | |
module: { | |
rules: base.module.rules.concat([ | |
{ | |
test: require.resolve('./src/index.js'), | |
loader: 'expose-loader?VirtualMachine' | |
}, | |
{ | |
test: require.resolve('./src/extensions/scratch3_video_sensing/debug.js'), | |
loader: 'expose-loader?Scratch3VideoSensingDebug' | |
}, | |
{ | |
test: require.resolve('stats.js/build/stats.min.js'), | |
loader: 'script-loader' | |
}, | |
{ | |
test: require.resolve('scratch-blocks/dist/vertical.js'), | |
loader: 'expose-loader?Blockly' | |
}, | |
{ | |
test: require.resolve('scratch-audio/src/index.js'), | |
loader: 'expose-loader?AudioEngine' | |
}, | |
{ | |
test: require.resolve('scratch-storage/src/index.js'), | |
loader: 'expose-loader?ScratchStorage' | |
}, | |
{ | |
test: require.resolve('scratch-render/src/index.js'), | |
loader: 'expose-loader?ScratchRender' | |
} | |
]) | |
}, | |
performance: { | |
hints: false | |
}, | |
plugins: base.plugins.concat([ | |
new CopyWebpackPlugin([{ | |
from: 'node_modules/scratch-blocks/media', | |
to: 'media' | |
}, { | |
from: 'node_modules/scratch-storage/dist/web' | |
}, { | |
from: 'node_modules/scratch-render/dist/web' | |
}, { | |
from: 'node_modules/scratch-svg-renderer/dist/web' | |
}, { | |
from: 'src/playground' | |
}]) | |
]) | |
}) | |
]; | |