Skip to content

Instantly share code, notes, and snippets.

@avicdro
Created June 5, 2019 07:47
Show Gist options
  • Save avicdro/3a54dad0c11d4e287301d636db150115 to your computer and use it in GitHub Desktop.
Save avicdro/3a54dad0c11d4e287301d636db150115 to your computer and use it in GitHub Desktop.
sass/sass module, react,
const path = require('path');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const webpack = require('webpack');
let isDevelopment = process.env.NODE_ENV;
module.exports = {
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist')
},
devServer: {
contentBase: path.join(__dirname, 'src'),
watchContentBase: true,
hot: true,
},
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: {
loader: "babel-loader",
}
},
{
test: /\.module\.s(a|c)ss$/,
loader: [
isDevelopment ? 'style-loader' : MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: {
modules: true,
localIdentName: '[name]__[local]___[hash:base64:5]',
camelCase: true,
sourceMap: isDevelopment
}
},
{
loader: 'sass-loader',
options: {
sourceMap: isDevelopment
}
}
]
},
{
test: /\.s(a|c)ss$/,
exclude: /\.module.(s(a|c)ss)$/,
loader: [
isDevelopment ? 'style-loader' : MiniCssExtractPlugin.loader,
'css-loader',
{
loader: 'sass-loader',
options: {
sourceMap: isDevelopment
}
}
]
}
]
},
plugins: [
new MiniCssExtractPlugin({
filename: isDevelopment ? '[name].css' : '[name].[hash].css',
chunkFilename: isDevelopment ? '[id].css' : '[id].[hash].css'
}),
new webpack.HotModuleReplacementPlugin()
]
};
@avicdro
Copy link
Author

avicdro commented Jun 5, 2019

// .babelrc
{
"presets": ["@babel/preset-env", "@babel/preset-react"]
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment