webpack больше не минимизирует пакет - PullRequest
0 голосов
/ 30 марта 2019

Я пишу модуль npm, который запускает компилятор webpack через узел против cli.Я не тестировал свою функцию сборки некоторое время, потому что она работала, но я недавно запустил ее, и я не могу получить веб-пакет для минимизации пакета js.были некоторые незначительные обновления для моего узла, веб-пакета и некоторых версий зависимостей, но не было серьезных обновлений и никаких критических изменений.я рвал на себе волосы, пытаясь заставить это работать снова, и обращаюсь к сообществу, чтобы избавить меня от здравого смысла.

кажется, что все хорошо скомпилировано, казалось, только минификация перестала работать.объект оптимизации был добавлен как часть этого устранения неполадок, и он нормально работал без предварительного.

при условии, что конфигурация выглядит нормально, есть ли что-то новое в веб-пакете или узле, которые могут мешать этому работать?я в тупике ...

webpack config ...

({
  devtool: 'source-map',
  entry: '/foo.js'
  externals: [nodeExternals()],
  mode: 'production',
  target: 'web',
  module: {
    rules: [
      {
        test: /\.coffee$/,
        use: [
          {
            loader: 'babel-loader'
          },
          {
            loader: 'coffee-loader'
          }
        ]
      },
      {
        test: /\.js$/,
        use: [
          {
            loader: 'babel-loader'
          }
        ]
      },
      {
        test: /\.(sass|css)$/,
        use: [
          {
            loader: Extract.loader,
            options: {
              sourceMap: true
            }
          },
          {
            loader: 'css-loader',
            options: {
              sourceMap: true
            }
          },
          {
            loader: 'sass-loader',
            options: {
              sourceMap: true
            }
          }
        ]
      }
    ]
  },
  optimization: {
    minimize: true,
    noEmitOnErrors: true
  },
  output: {
    filename: 'project_1.0.0.js',
    path: '/build'
  },
  plugins: [
    new Write,
    new Extract({
      filename: 'project_1.0.0.css'
    })
  ],
  resolve: {
    modules: ['node_modules']
  }
});

ОБНОВЛЕНИЕ: РЕШЕНИЕ НАЙДЕНО

проблема была связана с расширением .jss для output.filename,обновление до .js решило проблему.Однако это все еще странный результат ИМО.если любопытство дойдет до меня, я могу выложить еще одно обновление с объяснением поведения вебпака

Ответы [ 2 ]

0 голосов
/ 30 марта 2019

поэтому в процессе создания макета объекта js конфигурации веб-пакета для сообщения о переполнении стека (у меня были некоторые переменные и функции для некоторых значений), я заметил, что для файла output.filename вместо project.jss вместо project.js. я перепутал его с именем файла плагина Extract и сделал гибридное расширение js / css ... когда я исправил его в .js, теперь он снова работает ... что здорово ... но ...

с чего бы это сломать? очевидно, вы не можете просто создать пакет с любым желаемым расширением ... но почему бы не выдать ошибку, и почему минификация была бы единственной вещью, которая не работает ... это более риторические вопросы, но программист во мне хочет выяснить, почему .. кажется, что было бы дополнительной работой, чтобы делать то, что он делает.

@ jayarjo спасибо, что нашли время ответить. Я не уверен, что поймал бы, что если бы я не был там, форматируя отступы, чтобы попробовать ваш код. :)

0 голосов
/ 30 марта 2019

Я подозреваю, что, поскольку вы вручную добавили раздел optimization, теперь вам необходимо также определить свойство minimizer для него вручную. Попробуйте что-то вроде этого:

const TerserPlugin = require('terser-webpack-plugin');

// ...

{
    optimization: {
        minimize: true,
        minimizer: [
            new TerserPlugin({
                terserOptions: {
                    parse: {
                        ecma: 8
                    },
                    compress: {
                        ecma: 5,
                        warnings: false,
                        comparisons: false,
                        inline: 2
                    },
                    mangle: {
                        safari10: true
                    },
                    output: {
                        ecma: 5,
                        comments: false,
                        ascii_only: true
                    }
                },
                parallel: true,
                cache: true,
                sourceMap: true
            })
        ];
    }
}
...