text: const path = require('path');
  const HtmlWebpackPlugin = require('html-webpack-plugin');
  const MiniCssExtractPlugin = require('mini-css-extract-plugin');
  const copyPlugin = require('copy-webpack-plugin');
  const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
  const TerserPlugin = require('terser-webpack-plugin');
  const Dotenv = require('dotenv-webpack')
  const { CleanWebpackPlugin } = require('clean-webpack-plugin');
  const { ProgressPlugin } = require('webpack');
  
  
  module.exports = {
    // Entry nos permite decir el punto de entrada de nuestra aplicación
    entry: './src/index.js',
    // Output nos permite decir hacia dónde va enviar lo que va a preparar webpacks
    output: {
      // path es donde estará la carpeta donde se guardará los archivos
      // Con path.resolve podemos decir dónde va estar la carpeta y la ubicación del mismo
      path: path.resolve(__dirname, 'dist'),
      // filename le pone el nombre al archivo final
      filename: '[name].[contenthash].js',
      assetModuleFilename: 'assets/images/[hash][ext][query]'
    },
    resolve: {
      // Aqui ponemos las extensiones que tendremos en nuestro proyecto para webpack los lea
      extensions: ['.js'],
      alias: {
        '@utils': path.resolve(__dirname, 'src/utils/'),
        '@templates': path.resolve(__dirname, 'src/templates/'),
        '@styles': path.resolve(__dirname, 'src/styles/'),
        '@images': path.resolve(__dirname, 'src/assets/images/'),
      }
    },
    module: {
      rules: [
        {
          test: /\.m?js$/,
          exclude: /node_modules/,
          use: {
            loader: 'babel-loader'
          }
        },
        {
          test: /\.css|.styl$/i,
          use: [MiniCssExtractPlugin.loader,
            'css-loader',
            'stylus-loader'
          ],
        },
        {
          test: /\.png/,
          type: 'asset/resource'
        },
        {
          test: /\.(woff|woff2)$/,
          use: {
            loader: 'url-loader',
            options: {
              limit: 10000, // O LE PASAMOS UN BOOLEANOS TRUE O FALSE
              // Habilita o deshabilita la transformación de archivos en base64.
              mimetype: 'aplication/font-woff',
              // Especifica el tipo MIME con el que se alineará el archivo. 
              // Los MIME Types (Multipurpose Internet Mail Extensions)
              // son la manera standard de mandar contenido a través de la red.
              name: '[name].[contenthash].[ext]',
              // EL NOMBRE INICIAL DEL ARCHIVO + SU EXTENSIÓN
              // PUEDES AGREGARLE [name]hola.[ext] y el output del archivo seria 
              // ubuntu-regularhola.woff
              outputPath: './src./assets/fonts/', 
              // EL DIRECTORIO DE SALIDA (SIN COMPLICACIONES)
              publicPath: './src./assets/fonts/',
              // EL DIRECTORIO PUBLICO (SIN COMPLICACIONES)
              esModule: false 
              // AVISAR EXPLICITAMENTE SI ES UN MODULO
            },
          }
        }
        
      ]
    },
    plugins: [
      new HtmlWebpackPlugin({
        inject: true,
        template: './public/index.html',
        filename: './index.html'
      }),
      new MiniCssExtractPlugin({
        filename: 'assets/[name].[contenthash].css'
      }),
      new copyPlugin({
        patterns: [
          {
            from: path.resolve(__dirname, 'src', 'assets/images'),
            to: 'assets/images'
          }
        ]
      }),
      new Dotenv(),
      new CleanWebpackPlugin(),
      new ProgressPlugin(true),
    ],
    optimization: {
      minimize: true,
      minimizer: [
        new CssMinimizerPlugin(),
        new TerserPlugin(),
      ]
    }
  }