Я пытаюсь уменьшить мою реакцию JS Размер пакета - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь уменьшить размер моего файла сборки (main. js 432 KiB), это небольшой виджет! Я пробовал сжатие-webpack-plugin и DefinePlugin , но напрасно, размер остался прежним, нужны ли мне эти два расширения, разделение кода не вариант, потому что это небольшой виджет с одним компонентом. Буду признателен за любые отзывы. Tks.

enter image description here

Ниже вы можете найти мой webpack.config. js

var webpack = require('webpack');
var path = require('path');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var CompressionPlugin = require('compression-webpack-plugin');

module.exports = {
  entry: ['@babel/polyfill', './app/index.js'],
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'main.js'
  },
  module: {
    rules: [
      { test: /\.(js)$/, use: 'babel-loader' },
      { test: /\.(css|scss)$/, use: [ 'style-loader', 'css-loader', 'sass-loader', 'cssimportant-loader' ] },
      { test: /\.(jpe?g|png|ttf|eot|svg|woff(2)?)(\?[a-z0-9=&.]+)?$/,   use: 'base64-inline-loader?limit=1000&name=[name].[ext]' }
    ]
  },
  devtool: 'source-map',
  plugins: [
    new HtmlWebpackPlugin({
      template: './app/index.html',
      minify: {
        collapseWhitespace: true
      }
    }),
    new webpack.DefinePlugin({
      'process.env.NODE_ENV': JSON.stringify('production')
    }),
    new webpack.optimize.AggressiveMergingPlugin(),
    new CompressionPlugin({
      filename: "[path].gz[query]",
      algorithm: "gzip",
      test: /\.js$|\.css$|\.html$/,
      threshold: 10240,
      minRatio: 0.8
    })
  ]
};

А вот и мой пакет. json

{
  "name": "my-wdg",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "babel": {
    "presets": [
      "@babel/preset-env",
      "@babel/preset-react"
    ],
    "plugins": [
      "@babel/plugin-proposal-class-properties"
    ]
  },
  "scripts": {
    "clean": "rimraf dist",
    "start": "webpack-dev-server --open",
    "dist": "webpack -p --mode=production",
    "watch": "webpack --config webpack.config.js --watch",
    "build": "cross-env NODE_ENV=production npm run clean && webpack -p"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "cleanslate": "^0.10.1",
    "react": "^16.12.0",
    "react-dom": "^16.12.0",
    "resolve": "^1.13.1"
  },
  "devDependencies": {
    "@babel/core": "^7.7.5",
    "@babel/plugin-proposal-class-properties": "^7.7.4",
    "@babel/polyfill": "^7.7.0",
    "@babel/preset-env": "^7.7.6",
    "@babel/preset-react": "^7.7.4",
    "axios": "^0.19.0",
    "babel-loader": "^8.0.6",
    "base64-inline-loader": "^1.1.1",
    "compression-webpack-plugin": "^3.1.0",
    "cross-env": "^7.0.2",
    "css-loader": "^3.3.0",
    "cssimportant-loader": "^0.4.0",
    "file-loader": "^4.3.0",
    "html-webpack-plugin": "^3.2.0",
    "mini-css-extract-plugin": "^0.7.0",
    "node-sass": "^4.14.1",
    "react-meta-tags": "^0.7.4",
    "react-router-dom": "^5.1.2",
    "react-structured-data": "0.0.14",
    "sass-loader": "^7.3.1",
    "style-loader": "^0.23.1",
    "webpack": "^4.41.2",
    "webpack-cli": "^3.3.10",
    "webpack-dev-server": "^3.11.0",
    "webpack-provide-global-plugin": "0.0.1"
  }
}
...