github.com/openethereum/go-ethereum@v1.9.7/dashboard/assets/webpack.config.common.js (about)

     1  // Copyright 2019 The go-ethereum Authors
     2  // This file is part of the go-ethereum library.
     3  //
     4  // The go-ethereum library is free software: you can redistribute it and/or modify
     5  // it under the terms of the GNU Lesser General Public License as published by
     6  // the Free Software Foundation, either version 3 of the License, or
     7  // (at your option) any later version.
     8  //
     9  // The go-ethereum library is distributed in the hope that it will be useful,
    10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    12  // GNU Lesser General Public License for more details.
    13  //
    14  // You should have received a copy of the GNU Lesser General Public License
    15  // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
    16  
    17  const path = require('path');
    18  
    19  module.exports = {
    20  	target: 'web',
    21  	entry:  {
    22  		bundle: './index',
    23  	},
    24  	output: {
    25  		filename:          '[name].js',
    26  		path:              path.resolve(__dirname, ''),
    27  		sourceMapFilename: '[file].map',
    28  	},
    29  	resolve: {
    30  		modules: [
    31  			'node_modules',
    32  			path.resolve(__dirname, 'components'), // import './components/Component' -> import 'Component'
    33  		],
    34  		extensions: ['.js', '.jsx'],
    35  	},
    36  	module: {
    37  		rules: [
    38  			{
    39  				test:    /\.jsx$/, // regexp for JSX files
    40  				exclude: /node_modules/,
    41  				use:     [ // order: from bottom to top
    42  					{
    43  						loader:  'babel-loader',
    44  						options: {
    45  							presets: [ // order: from bottom to top
    46  								'@babel/env',
    47  								'@babel/react',
    48  							],
    49  							plugins: [ // order: from top to bottom
    50  								'@babel/proposal-function-bind', // instead of stage 0
    51  								'@babel/proposal-class-properties', // static defaultProps
    52  								'@babel/transform-flow-strip-types',
    53  								'react-hot-loader/babel',
    54  							],
    55  						},
    56  					},
    57  					// 'eslint-loader', // show errors in the console
    58  				],
    59  			},
    60  			{
    61  				test:  /\.css$/,
    62  				oneOf: [
    63  					{
    64  						test: /font-awesome/,
    65  						use:  [
    66  							'style-loader',
    67  							'css-loader',
    68  							path.resolve(__dirname, './fa-only-woff-loader.js'),
    69  						],
    70  					},
    71  					{
    72  						use: [
    73  							'style-loader',
    74  							'css-loader',
    75  						],
    76  					},
    77  				],
    78  			},
    79  			{
    80  				test: /\.woff2?$/, // font-awesome icons
    81  				use:  'url-loader',
    82  			},
    83  		],
    84  	},
    85  };