Задать вопрос
@SuperProshka

Как настроить minimize webpack?

Добрый день!
У меня есть проект на ts + react. Собираю его с помощью webpack
Вот так выглядит конфиг:
const path = require('path');
const HTMLWebpackPlugin = require('html-webpack-plugin');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const TerserPlugin = require("terser-webpack-plugin");



const app = {
    mode: "production",
    entry: "./src/start.jsx",
    optimization: {
        minimize: true,
        minimizer: [
        new TerserPlugin({
            terserOptions: {
            mangle: true,
            keep_classnames: true,
            },
        }),
        ]
    },
    output: {
        filename: (pathData) => {
            const date = new Date().toJSON().slice(0,10);
            var seconds = new Date().getTime() / 10000;
            return date + '.' + Math.round(seconds) + '.app.js';
        },
        path: path.resolve(__dirname, 'dist'),
    },
    optimization: {
        minimize: false,
    },
    plugins: [
        new HTMLWebpackPlugin({
            template: './src/index.html'
        }),
        new CleanWebpackPlugin(),
        new MiniCssExtractPlugin({
            filename: (pathData) => {
                const date = new Date().toJSON().slice(0,10);
                var seconds = new Date().getTime() / 10000;
                return date + '.' + Math.round(seconds) + '.app.css';
            },
        }),
    ],
    resolve: {
        alias: {
            '@': path.join(__dirname, './src/'),
        },
        extensions: ['.jsx', '.tsx', '.ts', '.d.ts', '.js', '.css'],
    },
    module: {
        rules: [
            {
                test: /\.(js|jsx|tsx|ts)$/,
                exclude: /node_modules/,
                loader: 'babel-loader'
            },
            {
                test: /\.css$/i,
                use: [MiniCssExtractPlugin.loader, "css-loader"],
            },
        ],
      },
}


module.exports = [app]


Я ожидаю что в бандле будут переименованы хотя бы локальные переменные, чтобы как-то защитить код. Вообщем ожидаю какой-то minimize. Но на выходе никакого minimize нету.
В чем может быть проблема?
p.s. по ощущениям mode: 'production' в конфиге не на что не повлиял.
  • Вопрос задан
  • 24 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
Mike_Ro
@Mike_Ro Куратор тега JavaScript
Python, JS, WordPress, SEO, Bots, Adversting
По идее, первый optimization будет перезаписан вторым optimization=false. Либо удалите второй блок, либо замените его на такой:
const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");
const TerserPlugin = require("terser-webpack-plugin");

optimization: {
    minimize: true,
    minimizer: [
        new TerserPlugin({
            terserOptions: {
                mangle: true,
                keep_classnames: true,
                keep_fnames: false,
            },
        }),
        new CssMinimizerPlugin(),
    ],
    splitChunks: {
       chunks: 'all',
    },
},

Я ожидаю что в бандле будут переименованы хотя бы локальные переменные, чтобы как-то защитить код.

Минимизация !== обфускация, код может быть изменен, но не с целью "защиты".
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы