Skip to content
Snippets Groups Projects
Select Git revision
  • b8ff4fd3df77277c451801940730410aa5a6db07
  • mui5-annotation-on-video-stable default
  • get_setter_canvasSizeInformations
  • fix-error-div-into-p
  • annotation-on-video-v2
  • detached
  • annotation-on-video-r17
  • mui5
  • mui5-react-18
  • jacob-test
  • annotation-on-video protected
  • master
  • test-antoinev1
  • 20-fetch-thumbnail-on-annotation
  • add-research-field
  • Save
  • add-plugin
  • 14-wip-no-seek-to
  • 14-bug-on-video-time-control
  • 9_wip_videotests
  • _upgrade_material_ui
  • latest-tetras-16
  • v3.3.0
  • v3.2.0
  • v3.1.1
  • v3.1.0
  • v3.0.0
  • v3.0.0-rc.7
  • v3.0.0-rc.6
  • v3.0.0-rc.5
  • v3.0.0-rc.4
  • v3.0.0-rc.3
  • v3.0.0-rc.2
  • v3.0.0-rc.1
  • v3.0.0-beta.10
  • v3.0.0-beta.9
  • v3.0.0-beta.8
  • v3.0.0-beta.7
  • v3.0.0-beta.6
  • v3.0.0-beta.5
  • v3.0.0-beta.3
41 results

webpack.config.js

Blame
  • webpack.config.js 2.50 KiB
    const path = require('path');
    const webpack = require('webpack');
    const TerserPlugin = require('terser-webpack-plugin');
    const paths = require('./config/paths');
    
    const eslintLoaderConfig = {
      test: /\.(js|mjs|jsx)$/,
      enforce: 'pre',
      use: [
        {
          options: {
            formatter: require.resolve('react-dev-utils/eslintFormatter'),
            eslintPath: require.resolve('eslint'),
    
          },
          loader: require.resolve('eslint-loader'),
        },
      ],
      include: paths.appSrc,
    };
    
    const babelLoaderConfig = {
      test: /\.(js|mjs|jsx)$/,
      include: paths.appSrc, // CRL
      loader: require.resolve('babel-loader'),
      options: {
        plugins: [
          [
            require.resolve('babel-plugin-named-asset-import'),
            {
              loaderMap: {
                svg: {
                  ReactComponent: '@svgr/webpack?-prettier,-svgo![path]',
                },
              },
            },
          ],
        ],
        cacheDirectory: true,
        // Save disk space when time isn't as important
        cacheCompression: true,
        compact: true,
      },
    };
    
    const baseConfig = [
      {
        entry: './src/index-core.js',
        output: {
          path: path.join(__dirname, 'dist'),
          filename: 'm3core.umd.js',
          libraryTarget: 'umd',
          library: 'm3core',
        },
        module: {
          rules: [
            eslintLoaderConfig,
            babelLoaderConfig,
          ],
        },
      },
      {
        entry: './src/index.js',
        output: {
          path: path.join(__dirname, 'dist'),
          filename: 'mirador.min.js',
          libraryTarget: 'umd',
          library: 'Mirador',
          libraryExport: 'default',
        },
        resolve: { extensions: ['.js'] },
        module: {
          rules: [
            eslintLoaderConfig,
            babelLoaderConfig,
            {
              test: /\.s?css$/,
              use: [
                'style-loader', // creates style nodes from JS strings
                'css-loader', // translates CSS into CommonJS
                'sass-loader', // compiles Sass to CSS, using Node Sass by default
              ],
            }],
        },
        optimization: {
          minimizer: [
            new TerserPlugin({
              terserOptions: {
                keep_fnames: true,
              },
            }),
          ],
        },
        plugins: [
          new webpack.IgnorePlugin({
            resourceRegExp: /@blueprintjs\/(core|icons)/, // ignore optional UI framework dependencies
          }),
        ],
      },
    ];
    
    module.exports = (env, options) => {
      const isProduction = options.mode === 'production';
      return baseConfig.map((config) => {
        config.devtool = !isProduction ? 'eval-source-map' : false; // eslint-disable-line no-param-reassign
        return config;
      });
    };