storj.io/minio@v0.0.0-20230509071714-0cbc90f649b1/browser/webpack.production.config.js (about)

     1  /*
     2   * Isomorphic Javascript library for MinIO Browser JSON-RPC API, (C) 2016 MinIO, Inc.
     3   *
     4   * Licensed under the Apache License, Version 2.0 (the "License");
     5   * you may not use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   *
     8   *     http://www.apache.org/licenses/LICENSE-2.0
     9   *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.
    15   */
    16  
    17  var webpack = require('webpack')
    18  var path = require('path')
    19  var glob = require('glob-all')
    20  var CopyWebpackPlugin = require('copy-webpack-plugin')
    21  var PurgecssPlugin = require('purgecss-webpack-plugin')
    22  
    23  var exports = {
    24    context: __dirname,
    25    mode: 'production',
    26    entry: [
    27      path.resolve(__dirname, 'app/index.js')
    28    ],
    29    output: {
    30      path: path.resolve(__dirname, 'production'),
    31      filename: 'index_bundle.js'
    32    },
    33    module: {
    34      rules: [{
    35          test: /\.js$/,
    36          exclude: /(node_modules|bower_components)/,
    37          use: [{
    38            loader: 'babel-loader',
    39            options: {
    40              presets: ['react', 'es2015']
    41            }
    42          }]
    43        }, {
    44          test: /\.less$/,
    45          use: [{
    46            loader: 'style-loader'
    47          }, {
    48            loader: 'css-loader'
    49          }, {
    50            loader: 'less-loader'
    51          }]
    52        }, {
    53          test: /\.css$/,
    54          use: [{
    55            loader: 'style-loader'
    56          }, {
    57            loader: 'css-loader'
    58          }]
    59        }, {
    60          test: /\.(eot|woff|woff2|ttf|svg|png)/,
    61          use: [{
    62            loader: 'url-loader'
    63          }]
    64        }]
    65    },
    66    node:{
    67      fs:'empty'
    68    },
    69    plugins: [
    70      new CopyWebpackPlugin({patterns: [
    71        {from: 'app/css/loader.css'},
    72        {from: 'app/img/browsers/chrome.png'},
    73        {from: 'app/img/browsers/firefox.png'},
    74        {from: 'app/img/browsers/safari.png'},
    75        {from: 'app/img/logo.svg'},
    76        {from: 'app/img/favicon/favicon-16x16.png'},
    77        {from: 'app/img/favicon/favicon-32x32.png'},
    78        {from: 'app/img/favicon/favicon-96x96.png'},
    79        {from: 'app/index.html'}
    80      ]}),
    81      new webpack.ContextReplacementPlugin(/moment[\\\/]locale$/, /^\.\/(en)$/),
    82      new PurgecssPlugin({
    83        paths: glob.sync([
    84          path.join(__dirname, 'app/index.html'),
    85          path.join(__dirname, 'app/js/*.js')
    86        ])
    87      })
    88    ]
    89  }
    90  
    91  if (process.env.NODE_ENV === 'dev') {
    92    exports.entry = [
    93      'webpack-dev-server/client?http://localhost:8080',
    94      path.resolve(__dirname, 'app/index.js')
    95    ]
    96  }
    97  
    98  module.exports = exports