Files
openlayers/examples/webpack/config.js
Tim Schaub 054af09032 Make code prettier
This updates ESLint and our shared eslint-config-openlayers to use Prettier.  Most formatting changes were automatically applied with this:

    npm run lint -- --fix

A few manual changes were required:

 * In `examples/offscreen-canvas.js`, the `//eslint-disable-line` comment needed to be moved to the appropriate line to disable the error about the `'worker-loader!./offscreen-canvas.worker.js'` import.
 * In `examples/webpack/exapmle-builder.js`, spaces could not be added after a couple `function`s for some reason.  While editing this, I reworked `ExampleBuilder` to be a class.
 * In `src/ol/format/WMSGetFeatureInfo.js`, the `// @ts-ignore` comment needed to be moved down one line so it applied to the `parsersNS` argument.
2020-04-06 12:54:09 -06:00

90 lines
2.1 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/],
}),
],
runtimeChunk: {
name: 'common',
},
splitChunks: {
name: 'common',
chunks: 'initial',
minChunks: 2,
},
},
plugins: [
new ExampleBuilder({
templates: path.join(__dirname, '..', 'templates'),
common: 'common',
}),
new CopyPlugin([
{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'},
]),
],
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'),
},
},
};