Created
April 9, 2018 14:44
-
-
Save matheus1lva/587b2d3890c9c96e3f3dbe567c8ecfce to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const MiniCssExtractPlugin = require('mini-css-extract-plugin'); | |
const webpack = require('webpack'); | |
const path = require('path'); | |
const HtmlWebpackPlugin = require('html-webpack-plugin'); | |
const CopyWebpackPlugin = require('copy-webpack-plugin'); | |
const extractCSS; | |
const extractSCSS; | |
const BUILD_DIR = path.resolve(__dirname, 'build'); | |
const SRC_DIR = path.resolve(__dirname, 'src'); | |
module.exports = (env = {}) => { | |
return { | |
entry: { | |
index: [SRC_DIR + '/index.js'] | |
}, | |
output: { | |
path: BUILD_DIR, | |
filename: '[name].bundle.js' | |
}, | |
devtool: env.prod ? 'source-map' : 'eval', | |
devServer: { | |
contentBase: BUILD_DIR, | |
compress: true, | |
hot: true | |
}, | |
module: { | |
rules: [ | |
{ | |
test: /\.(js|jsx)$/, | |
exclude: /node_modules/, | |
use: { | |
loader: 'babel-loader', | |
options: { | |
cacheDirectory: true, | |
presets: ['react', 'env'] | |
} | |
} | |
}, | |
{ | |
test: /\.html$/, | |
use: [{ | |
loader: 'html-loader' | |
}] | |
}, | |
{ | |
test: /\.(scss)$/, | |
use: ['css-hot-loader'].concat(extractSCSS.extract({ | |
fallback: 'style-loader', | |
use: [ | |
{ | |
loader: 'css-loader', | |
options: {alias: {'../img': '../public/img'}} | |
}, | |
{ | |
loader: 'sass-loader' | |
} | |
] | |
})) | |
}, | |
{ | |
test: /\.css$/, | |
use: extractCSS.extract({ | |
fallback: 'style-loader', | |
use: 'css-loader' | |
}) | |
}, | |
{ | |
test: /\.(png|jpg|jpeg|gif|ico)$/, | |
use: [ | |
{ | |
// loader: 'url-loader' | |
loader: 'file-loader', | |
options: { | |
name: './img/[name].[hash].[ext]' | |
} | |
} | |
] | |
}, | |
{ | |
test: /\.(woff(2)?|ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/, | |
use: [{ | |
loader: 'file-loader', | |
options: { | |
name: './fonts/[name].[hash].[ext]' | |
} | |
}] | |
}] | |
}, | |
plugins: [ | |
new webpack.HotModuleReplacementPlugin(), | |
new webpack.optimize.UglifyJsPlugin({ | |
sourceMap: true, | |
sourceMap: true | |
}), | |
new webpack.NamedModulesPlugin(), | |
extractCSS, | |
extractSCSS, | |
new HtmlWebpackPlugin( | |
{ | |
inject: true, | |
template: './public/index.html' | |
} | |
), | |
new CopyWebpackPlugin([ | |
{from: './public/img', to: 'img'} | |
], | |
{copyUnmodified: false} | |
), | |
new webpack.LoaderOptionsPlugin({ | |
minimize: true | |
}), | |
new MiniCssExtractPlugin({ | |
filename: null, | |
publicPath: null | |
}) | |
] | |
}; | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment