Advertisement
Guest User

Untitled

a guest
Dec 4th, 2020
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const path = require('path');
  2. const webpack = require('webpack');
  3. const MiniCssExtractPlugin   = require('mini-css-extract-plugin');
  4. const WebpackAssetsManifest  = require('webpack-assets-manifest');
  5. const { CleanWebpackPlugin } = require('clean-webpack-plugin');
  6. const BrowserSyncPlugin      = require('browser-sync-webpack-plugin');
  7. // const IgnoreAssetsWebpackPlugin = require('ignore-assets-webpack-plugin');
  8. module.exports = ( env ) => {
  9.     let config = {
  10.         mode: 'development',
  11.         entry: {
  12.             admcustom: path.resolve(__dirname, 'src/js/admin-custom.js'),
  13.             home: path.resolve(__dirname, 'src/js/home.js'),
  14.             shop: path.resolve(__dirname, 'src/js/shop.js'),
  15.             'single-product': path.resolve(__dirname, 'src/js/single-product.js'),
  16.             cart: path.resolve(__dirname, 'src/js/cart.js'),
  17.             checkout: path.resolve(__dirname, 'src/js/checkout.js'),
  18.             myacc: path.resolve(__dirname, 'src/js/myacc.js'),
  19.             'other-pages': path.resolve(__dirname, 'src/js/other-pages.js'),
  20.             commons: path.resolve(__dirname, 'src/js/commons.js'),
  21.         },
  22.         devtool: 'eval-cheap-source-map',//'eval-cheap-module-source-map',
  23.         output: {
  24.             filename: 'js/[name].[contenthash].bundle.js',
  25.             chunkFilename: 'js/[name].[contenthash].bundle.js',
  26.             path: path.resolve(__dirname, '../assets'),
  27.             publicPath: '../'
  28.         },
  29.         optimization: {
  30.             splitChunks: {
  31.                 cacheGroups: {
  32.                     vendor: {
  33.                         test: /[\\/]node_modules[\\/]/,
  34.                         name: 'vendor',
  35.                         chunks: 'all',
  36.                     },
  37.                 },
  38.             }
  39.         },
  40.         module: {
  41.             rules: [
  42.                 {
  43.                     test: /\.(jpe?g|png)$/i,
  44.                     use: {
  45.                             loader: 'url-loader',
  46.                             options: {
  47.                                 name: 'img/[name].[hash].[ext]',
  48.                                 limit: 25000,
  49.                             }
  50.                         }
  51.                 },
  52.                 {
  53.                     test: /\.(jpe?g|png|gif|svg)$/i,
  54.                     use:{
  55.                         loader: 'file-loader',
  56.                         options: {
  57.                             name: 'img/[name].[hash].[ext]'
  58.                         }
  59.                     }
  60.                 },
  61.                 {
  62.                     test: /\.(jpe?g|png|gif)$/i,
  63.                     use: {
  64.                         loader: 'image-webpack-loader',
  65.                         options: {
  66.                             mozjpeg: {
  67.                                 progressive: true,
  68.                                 quality: 65
  69.                             },
  70.                             optipng: {
  71.                                 enabled: true,
  72.                             },
  73.                             pngquant: {
  74.                                 quality: [0.65, 0.90],
  75.                                 speed: 4
  76.                             },
  77.                             gifsicle: {
  78.                                 interlaced: false,
  79.                             },
  80.                             webp: {
  81.                                 quality: 75
  82.                             }
  83.                         }
  84.                     }
  85.                 },
  86.                 // {
  87.                 //     test: /\.(jpe?g|png|gif)$/i,
  88.                 //     use: {
  89.                 //         loader: 'image-webpack-loader',
  90.                 //         options: {
  91.                 //             mozjpeg: {
  92.                 //                 progressive: true,
  93.                 //                 quality: 65
  94.                 //             },
  95.                 //             // optipng.enabled: false will disable optipng
  96.                 //             optipng: {
  97.                 //                 enabled: true,
  98.                 //             },
  99.                 //             pngquant: {
  100.                 //                 quality: [0.65, 0.90],
  101.                 //                 speed: 4
  102.                 //             },
  103.                 //             gifsicle: {
  104.                 //                 interlaced: false,
  105.                 //             },
  106.                 //             webp: {
  107.                 //                 quality: 75
  108.                 //             }
  109.                 //         }
  110.                 //     }
  111.                 // },
  112.                 // {
  113.                 //     test: /\.(jpe?g|png|gif)$/i,
  114.                 //     use: {
  115.                 //     loader: 'url-loader',
  116.                 //         options: {
  117.                 //             name: 'img/[name].[hash].[ext]',
  118.                 //             limit: 25000
  119.                 //         }
  120.                 //     }
  121.                 // },
  122.                 // {
  123.                 //     test: /\.(png|jpe?g|png|gif)/,
  124.                 //     use: [
  125.                 //         {
  126.                 //             loader: 'url-loader',
  127.                 //             options: {
  128.                 //                 name: 'img/[name].[hash].[ext]',
  129.                 //                 limit: 25000
  130.                 //             }
  131.                 //         },
  132.                 //     ]
  133.                 // },
  134.                 {
  135.                     test: /\.css$/i,
  136.                     use: [
  137.                         MiniCssExtractPlugin.loader,
  138.                         'css-loader',
  139.                         {
  140.                             loader: 'postcss-loader',
  141.                             options: {
  142.                                 ident: 'postcss',
  143.                                 plugins: () => [
  144.                                     require('autoprefixer')({}),
  145.                                     require('precss'),
  146.                                 ]
  147.                             },
  148.                         },
  149.                         'sass-loader'
  150.  
  151.                     ],
  152.                 },
  153.             ],
  154.         },
  155.         plugins: [
  156.             new BrowserSyncPlugin({
  157.                 watch: true,
  158.                 host: 'localhost',
  159.                 port: 8080,
  160.                 proxy: "http://letmebuy.ru",
  161.                 files: [
  162.                     {
  163.                         match: [
  164.                             "/var/www/letmebuy.ru/wp-content/themes/letmebuy/**/*.php",
  165.                             "/var/www/letmebuy.ru/wp-content/themes/letmebuy/**/*.html",
  166.                             "/var/www/letmebuy.ru/wp-content/themes/letmebuy/**/*.js"
  167.                         ],
  168.                     }
  169.                 ]
  170.             }),
  171.             new MiniCssExtractPlugin({
  172.                 filename: 'css/[name].[contenthash].css'
  173.             }),
  174.             new WebpackAssetsManifest({
  175.                 // Options go here
  176.             }),
  177.             new CleanWebpackPlugin(
  178.                 {
  179.                     cleanOnceBeforeBuildPatterns: ['js/*', 'css/*', 'img/*', '!js/libraries'],
  180.                 }
  181.             ),
  182.         ]
  183.     };
  184.     let babel = {
  185.         test: /\.js$/,
  186.         exclude: /(node_modules|bower_components)/,
  187.         use: {
  188.             loader: "babel-loader",
  189.             options: {
  190.                 presets: [
  191.                     [
  192.                         "@babel/preset-env", {
  193.                             modules: false,
  194.                             useBuiltIns: "usage",
  195.                             corejs: 3,
  196.                         }
  197.  
  198.                     ]
  199.                 ],
  200.                 plugins: ["@babel/plugin-syntax-dynamic-import"]
  201.             }
  202.         }
  203.     };
  204.     config.module.rules.push( babel );
  205.  
  206.     return config;
  207. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement