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