94 lines
2.2 KiB
JavaScript
94 lines
2.2 KiB
JavaScript
const TerserPlugin = require('terser-webpack-plugin');
|
|
const CopyPlugin = require('copy-webpack-plugin');
|
|
const ExampleBuilder = require('./example-builder');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const src = path.join(__dirname, '..');
|
|
|
|
const examples = fs
|
|
.readdirSync(src)
|
|
.filter((name) => /^(?!index).*\.html$/.test(name))
|
|
.map((name) => name.replace(/\.html$/, ''));
|
|
|
|
const entry = {};
|
|
examples.forEach((example) => {
|
|
entry[example] = `./${example}.js`;
|
|
});
|
|
|
|
module.exports = {
|
|
context: src,
|
|
target: 'web',
|
|
entry: entry,
|
|
stats: 'minimal',
|
|
module: {
|
|
rules: [
|
|
{
|
|
test: /^((?!es2015-)[\s\S])*\.js$/,
|
|
use: {
|
|
loader: 'buble-loader',
|
|
},
|
|
include: [
|
|
path.join(__dirname, '..', '..', 'src'),
|
|
path.join(__dirname, '..'),
|
|
],
|
|
},
|
|
{
|
|
test: /\.js$/,
|
|
use: {
|
|
loader: path.join(__dirname, './worker-loader.js'),
|
|
},
|
|
include: [path.join(__dirname, '../../src/ol/worker')],
|
|
},
|
|
],
|
|
},
|
|
optimization: {
|
|
minimizer: [
|
|
new TerserPlugin({
|
|
sourceMap: true,
|
|
// Do not minify examples that inject code into workers
|
|
exclude: [/(color-manipulation|region-growing|raster)\.js/],
|
|
extractComments: false,
|
|
}),
|
|
],
|
|
runtimeChunk: {
|
|
name: 'common',
|
|
},
|
|
splitChunks: {
|
|
name: 'common',
|
|
chunks: 'initial',
|
|
minChunks: 2,
|
|
},
|
|
},
|
|
plugins: [
|
|
new ExampleBuilder({
|
|
templates: path.join(__dirname, '..', 'templates'),
|
|
common: 'common',
|
|
}),
|
|
new CopyPlugin({
|
|
patterns: [
|
|
{from: '../src/ol/ol.css', to: 'css'},
|
|
{from: 'data', to: 'data'},
|
|
{from: 'resources', to: 'resources'},
|
|
{from: 'Jugl.js', to: 'Jugl.js'},
|
|
{from: 'index.html', to: 'index.html'},
|
|
{from: 'index.js', to: 'index.js'},
|
|
],
|
|
}),
|
|
],
|
|
devtool: 'source-map',
|
|
output: {
|
|
filename: '[name].js',
|
|
path: path.join(__dirname, '..', '..', 'build', 'examples'),
|
|
},
|
|
node: {
|
|
fs: 'empty', // required by ol-mapbox-stlye
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
// allow imports from 'ol/module' instead of specifiying the source path
|
|
ol: path.join(__dirname, '..', '..', 'src', 'ol'),
|
|
},
|
|
},
|
|
};
|