webpack 4 uglifyjs не минимизирует и не сжимает - PullRequest
0 голосов
/ 25 ноября 2018

Я использую webpack 4 и не уверен, что мой код сжимается и минимизируется.Я также использую React.

Моя первая проблема - использование плагина Webpack UglifyJS в свойстве webpack plugin или в свойстве optimization.Когда я использую свойство plugin, оно, по-видимому, сжимается по крайней мере, но не в одну строку.Я все еще не уверен, минимизирует ли это.Когда я использую optimization, он даже не сжимается.Когда я смотрю на свой js-файл в комплекте, кажется, что он объединяет вещи в node_modules, например webpack.

// работает с plugin

module.exports = {
    ...
    plugins: [new UglifyJsPlugin({
        test: /\.js$/,
        exclude: /node_modules/,
        sourceMap: true,
        uglifyOptions: {
            compress: {},
            mangle: true,
        }
}],

// не работает с optimization

module.exports = {
    ...
    optimization: {
        minimize: true,
        minimizer: [new UglifyJsPlugin({
            test: /\.js$/,
            exclude: /node_modules/,
            sourceMap: true,
            uglifyOptions: {
                compress: {},
                mangle: true,
             }
       }],
    }

В первом примере код сжимается припо крайней мере, но не в одну строку.

// Пример

!*** ./node_modules/scheduler/index.js ***!
  \*****************************************/
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nif (false) {} else {\n...

 !*** ./node_modules/scheduler/tracing.js ***!
  \*******************************************/
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nif (false) {...

Также не уверен, минимизируется ли он.Я написал функцию в своем React Component

someFunc(one, two) {
    return one + two
}

Согласно документации npm uglifyjs, она должна быть уменьшена до

someFunc(a, b) { \n return a+b\n}

, но выводится как

someFunc(one, two) { \n return one + two\n}

Это минификация?

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

Я тоже столкнулся с той же проблемой.Он начал работать после предоставления значения конфигурации режима в качестве рабочей.

module.exports = {
    // webpack config
    mode: process.env.NODE_ENV || 'development',
};

// command NODE_ENV=production webpack
0 голосов
/ 25 ноября 2018

Webpack 4 выполняет оптимизацию и минимизацию по умолчанию в режиме production.

Так что, если мое предположение верно, ваша конфигурация равна development конфигурации.

Вы можете удалить явный UglifyJsPluginопределение и установите mode на production, и Webpack позаботится обо всем.

mode: 'production',
plugins: [...],
optimization: ...

Вы можете настроить свои оптимизации, хотя и при необходимости.Но установка режима на production даст вам ожидаемые результаты.

Подробнее здесь

Использование режима Webpack 4

...