webpack.config.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. const path = require("path");
  2. const webpack = require("webpack");
  3. const HtmlWebpackPlugin = require("html-webpack-plugin");
  4. const MiniCssExtractPlugin = require("mini-css-extract-plugin");
  5. const devMode = process.env.NODE_ENV !== "production";
  6. module.exports = {
  7. mode: devMode ? "development" : "production",
  8. entry: "./src/index.js",
  9. output: {
  10. path: __dirname + "/build",
  11. filename: devMode ? "[name].js" : "[name].[chunkhash:8].js"
  12. },
  13. module: {
  14. rules: [
  15. /*
  16. {
  17. enforce: "pre",
  18. test: /\.(js|jsx)$/,
  19. exclude: /node_modules/,
  20. use: "eslint-loader"
  21. },
  22. */
  23. {
  24. test: /\.js$/,
  25. exclude: /node_modules/,
  26. use: {
  27. loader: "babel-loader",
  28. options: {
  29. presets: ["@babel/preset-env"]
  30. }
  31. }
  32. },
  33. {
  34. test: /\.scss$/,
  35. exclude: /node_modules/,
  36. use: [MiniCssExtractPlugin.loader, "css-loader", "sass-loader"]
  37. }
  38. ]
  39. },
  40. plugins: [
  41. new HtmlWebpackPlugin({
  42. title: "Cryptocart",
  43. template: "src/index.html"
  44. }),
  45. new MiniCssExtractPlugin({
  46. filename: devMode ? "[name].css" : "[name].[contenthash:8].css"
  47. })
  48. ]
  49. };