text: /*******************************************************************************
   *
   *    Copyright 2019 Adobe. All rights reserved.
   *    This file is licensed to you under the Apache License, Version 2.0 (the "License");
   *    you may not use this file except in compliance with the License. You may obtain a copy
   *    of the License at http://www.apache.org/licenses/LICENSE-2.0
   *
   *    Unless required by applicable law or agreed to in writing, software distributed under
   *    the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
   *    OF ANY KIND, either express or implied. See the License for the specific language
   *    governing permissions and limitations under the License.
   *
   ******************************************************************************/
  const path = require('path');
  const { CleanWebpackPlugin } = require('clean-webpack-plugin');
  const pkg = require('./package.json');
  const MiniCssExtractPlugin = require('mini-css-extract-plugin');
  
  const libraryName = pkg.name;
  
  module.exports = {
      entry: path.resolve(__dirname, 'src') + '/index.js',
      output: {
          path: path.resolve(__dirname, 'dist'),
          filename: 'index.js',
          libraryTarget: 'umd',
          library: libraryName,
          umdNamedDefine: true,
          publicPath: '/dist/'
      },
  
      module: {
          rules: [
              {
                  test: /\.graphql$/,
                  exclude: /node_modules/,
                  use: [
                      {
                          loader: 'graphql-tag/loader'
                      }
                  ]
              },
              {
                  test: /\.js$/,
                  exclude: /(node_modules|dist)/,
                  use: {
                      loader: 'babel-loader',
                      options: {
                          presets: ['@babel/preset-react']
                      }
                  }
              },
              {
                  test: /\.css/,
                  use: [
                      MiniCssExtractPlugin.loader,
                      {
                          loader: 'css-loader',
                          options: {
                              modules: {
                                  localIdentName: 'cmp-[folder]__[name]__[local]'
                              }
                          }
                      }
                  ]
              },
              {
                  test: /\.svg$/,
                  use: [
                      {
                          loader: 'file-loader',
                          options: {
                              outputPath: 'resources',
                              name: '[name].[ext]'
                          }
                      }
                  ]
              }
          ]
      },
      plugins: [
          new CleanWebpackPlugin(),
          new MiniCssExtractPlugin({
              filename: '[name].css',
              chunkFilename: '[id].css'
          })
      ],
      devtool: 'source-map',
      mode: 'development',
      resolve: {
          alias: {
              react: path.resolve(__dirname, './node_modules/react'),
              'react-dom': path.resolve(__dirname, './node_modules/react-dom'),
              'react-i18next': path.resolve(__dirname, './node_modules/react-i18next')
          }
      },
      externals: {
          react: {
              root: 'React',
              commonjs2: 'react',
              commonjs: 'react',
              amd: 'react'
          },
          'react-dom': {
              root: 'ReactDOM',
              commonjs2: 'react-dom',
              commonjs: 'react-dom',
              amd: 'react-dom'
          },
          'react-i18next': {
              root: 'reactI18next',
              commonjs2: 'react-i18next',
              commonjs: 'react-i18next',
              amd: 'react-i18next'
          }
      }
  };
  