Advertisement
Guest User

Untitled

a guest
Oct 25th, 2020
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. const path = require('path')
  3. const { CleanWebpackPlugin } = require('clean-webpack-plugin')
  4. const HTMLWebpackPlugin = require('html-webpack-plugin')
  5. const CopyPlugin = require('copy-webpack-plugin')
  6. const MiniCssExtractPlugin = require('mini-css-extract-plugin')
  7. const isProd = process.env.NODE_ENV === 'production'
  8. const isDev = !isProd
  9.  
  10.  
  11. const fileName = ext => isDev ? `bundle.${ext}` : `bundle.${ext}`
  12.  
  13. module.exports = {
  14.     context: path.resolve(__dirname, 'src'),
  15.     mode: 'development',
  16.     entry: ['@babel/polyfill', './index.js',],
  17.     output: {
  18.         filename: fileName('js'),
  19.         path: path.resolve(__dirname, 'dist')
  20.     },
  21.     resolve: {
  22.         extensions: ['.js'],
  23.         alias: {
  24.             '@': path.resolve(__dirname, 'src'),
  25.             "@core": path.resolve(__dirname, 'src/core')
  26.         }
  27.     },
  28.     devtool: isDev ? 'source-map' : false,
  29.     devServer: {
  30.         contentBase: path.join(__dirname, 'dist'),
  31.         compress: true,
  32.         port: 3000,
  33.         hot: isDev
  34.     },
  35.     plugins: [
  36.         new CleanWebpackPlugin(),
  37.         new HTMLWebpackPlugin({
  38.             template: 'index.html',
  39.             minify: {
  40.                 removeComments: isProd,
  41.                 collapseWhitespace: isProd
  42.             }
  43.         }),
  44.         new CopyPlugin({
  45.             patterns: [
  46.                 {
  47.                     context: path.resolve(__dirname, 'src'),
  48.                     from: path.resolve(__dirname, 'src/favicon.ico'),
  49.                     to: path.resolve(__dirname, 'dist')
  50.                 }
  51.             ]
  52.         }),
  53.         new MiniCssExtractPlugin({
  54.             filename: fileName('css')
  55.         })
  56.     ],
  57.     module: {
  58.         rules: [
  59.             {
  60.                 test: /\.s[ac]ss$/i,
  61.                 use: [
  62.                     MiniCssExtractPlugin.loader,
  63.                     'css-loader',
  64.                     'sass-loader',
  65.                 ],
  66.             },
  67.             {
  68.                 test: /\.m?js$/,
  69.                 exclude: /node_modules/,
  70.                 use: {
  71.                     loader: "babel-loader",
  72.                     options: {
  73.                         presets: ['@babel/preset-env']
  74.                     }
  75.                 }
  76.             },
  77.         ],
  78.     }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement