speedy-vision
Version:
GPU-accelerated Computer Vision for JavaScript
82 lines (80 loc) • 2.69 kB
JavaScript
const path = require('path');
const webpack = require('webpack');
const TerserPlugin = require('terser-webpack-plugin');
const pack = require("./package.json");
module.exports = (env, argv) => ({
entry: './src/main.js',
output: {
filename: argv.mode == 'development' ? 'speedy-vision.js' : 'speedy-vision.min.js',
path: path.resolve(__dirname, 'dist'),
publicPath: '/dist/',
library: {
name: 'Speedy',
type: 'umd',
export: 'default',
},
},
plugins: [
new webpack.BannerPlugin({
banner: (({ version, homepage, description, year, author, license, date }) => [
`Speedy Vision version ${version}`,
`${description}`,
`Copyright ${year} ${author}`,
`${homepage}`,
``,
`@license ${license}`,
`Date: ${date}`,
].join('\n'))(Object.assign({}, pack, {
'date': (new Date()).toISOString(),
'year': [2020, new Date().getFullYear()].join('-'),
'author': pack.author.replace('@', '(at)'),
}))
}),
new webpack.DefinePlugin({
'__SPEEDY_VERSION__': JSON.stringify(pack.version),
'__SPEEDY_DEVELOPMENT_MODE__': argv.mode == 'development',
'__SPEEDY_WEBSITE__': JSON.stringify(pack.homepage),
}),
new webpack.IgnorePlugin({
resourceRegExp: /\.ignore\./i,
}),
],
module: {
rules: [{
test: /\.glsl$/i,
use: [{
loader: path.resolve('webpack-glsl-minifier.js'),
}],
},{
test: /\.wasm.txt$/i,
use: [{
loader: path.resolve('webpack-wasm-loader.js'),
}],
}],
},
mode: argv.mode == 'development' ? 'development' : 'production',
devtool: argv.mode == 'development' ? 'source-map' : undefined,
devServer: {
host: env.HOST || '0.0.0.0',
port: env.PORT || 8080,
static: ['assets', 'demos', 'tests'].map(dir => ({
directory: path.resolve(__dirname, dir),
publicPath: `/${dir}/`,
})),
},
optimization: argv.mode == 'development' ? { minimize: false } : {
minimize: true,
minimizer: [new TerserPlugin({
terserOptions: {
/*output: {
comments: /^!/,
},*/
compress: {
defaults: true,
},
mangle: true,
},
extractComments: false,
})],
},
});