Skip to content

Anik7303/react-webpack-setup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Webpack Setup for React:

Live-reload:

// webpack config file export module.exports = { mode: "development", devServer: { liveReload: true, }, };

Hot-reload:

// webpack config file export module.exports = { mode: "development", devServer: { liveReload: false, hot: true, }, plugins: [new webpack.HotModuleReplacementPlugin()], };

Loaders:

Snapshots:

babel-loader:

{ test: /\.js$/i, exclude: /node_modules/, use: { loader: "babel-loader", options: { presets: ["@babel/preset-env", "@babel/preset-react"], }, } }

css-loader:

{ test: /\.css$/i, use: [ "style-loader", // for production { loader: MiniCssExtractPlugin.loader } { loader: "css-loader", options: { sourceMap: true } }, { loader: "postcss-loader", options: { postcssOptions: { plugins: { "postcss-import": {}, "postcss-preset-env": { browsers: ["last 1 version"], // for production change this stage: 0 } } }, sourceMap: true } } ] }

sass-loader:

{ test: /\.s[ac]ss$/i, use: [ "style-loader", // for production { loader: MiniCssExtractPlugin.loader } { loader: "css-loader", options: { sourceMap: true } }, { loader: "postcss-loader", options: { postcssOptions: { plugins: { "postcss-import": {}, "postcss-preset-env": { browsers: ["last 1 version"], stage: 0 } } }, sourceMap: true } }, { loader: "sass-loader", options: { sourceMap: true, implementation: require("sass") } } ] }

file-loader:

{ test: /\.(png|jpe?g|gif)$/i, use: { loader: "file-loader", options: { publicPath: path.resolve(__dirname, "../dist/static/"), outputPath: "images" } } }

url-loader:

{ test: /\.svg$/i, use: { loader: "url-loader" } }

Plugins:

HtmlWebpackPlugin:

new HtmlWebpackPlugin({ template: path.resolve(__dirname, "../public/index.html"), favicon: path.resolve(__dirname, "../public/favicon.ico"), });

MiniCssExtractPlugin:

new MiniCssExtractPlugin({ filename: path.join("static", "css", "[name].[contenthash].css"), });