从 Webpack 1 升级到 4 ..缩小问题



所以我终于有时间将使用 webpack 1 (1.13.0( 的繁重任务升级到最新的 webpack 4(在此答案时:4.30.1(。

在加载器上出现大量错误后,除了抛出错误的缩小:(

我注意到的是 Webpack 1 将.js文件输出为

var MyLibrary =
/******/ (function(modules) { // webpackBootstrap
/******/    // The module cache
/******/    var installedModules = {};
/******/
/******/    // The require function
/******/    function __webpack_require__(moduleId) {
/******/
/******/        // Check if module is in cache
/******/        if(installedModules[moduleId])
/******/            return installedModules[moduleId].exports;
...

但是使用 Webpack 4 输出是"压缩的"

var MyLibrary=function(e){var n={};function t(a){if(n[a])return n[a].exports;var o=n[a]={i:a,l:!1,exports:{}};return e[a].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=e,t.c=n,t.d=function(e,n,a){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:a})},t.r=function(e)...

并使用与我从 Webpack 1 获得的完全相同的来源

> grunt run --client=mylibrary
Running "run" task
↬ Using production configuration
Running "webpack:default" (webpack) task
Version: webpack 1.13.0
           Asset    Size  Chunks             Chunk Names
    mylibrary.js  450 kB       0  [emitted]  main
mylibrary.js.map  545 kB       0  [emitted]  main
Running "replace:default" (replace) task
>> 2 replacements in 1 file.
Running "uglify:default" (uglify) task
File dist/mylibrary/mylibrary.min.js created: 450.09 kB → 177.94 kB
>> 1 file created.
Running "compress:default" (compress) task
>> Compressed 1 file
Done.

使用 Webpack 4 我在尝试缩小文件时出现错误

> grunt run --client=mylibrary
Running "run" task
↬ Using production configuration
Running "webpack" task
   56 modules
Running "replace:default" (replace) task
>> 2 replacements in 1 file.
Running "uglify:default" (uglify) task
{ SyntaxError: Unexpected token: name «a», expected: punc «;»
    at JS_Parse_Error.get (<anonymous>:71:23)
    at formatError (internal/util/inspect.js:817:16)
    at formatRaw (internal/util/inspect.js:616:14)
    at formatValue (internal/util/inspect.js:511:10)
    at inspect (internal/util/inspect.js:191:10)
    at Object.formatWithOptions (util.js:84:12)
    at Console.(anonymous function) (console.js:191:15)
    at Console.log (console.js:202:31)
    at E:mylibraryrepositoriesbitbucketsc-mylibrarynode_modulesgrunt-contrib-uglifytasksuglify.js:144:17
    at Array.forEach (<anonymous>:null:null)
    at Object.<anonymous> (E:mylibraryrepositoriesbitbucketsc-mylibrarynode_modulesgrunt-contrib-uglifytasksuglify.js:78:16)
    at Object.<anonymous> (E:mylibraryrepositoriesbitbucketsc-mylibrarynode_modulesgruntlibgrunttask.js:252:15)
    at Object.thisTask.fn (E:mylibraryrepositoriesbitbucketsc-mylibrarynode_modulesgruntlibgrunttask.js:70:16)
    at Object.<anonymous> (E:mylibraryrepositoriesbitbucketsc-mylibrarynode_modulesgruntlibutiltask.js:294:30)
    at Task.runTaskFn (E:mylibraryrepositoriesbitbucketsc-mylibrarynode_modulesgruntlibutiltask.js:244:24)
    at Task.<anonymous> (E:mylibraryrepositoriesbitbucketsc-mylibrarynode_modulesgruntlibutiltask.js:293:12)
    at E:mylibraryrepositoriesbitbucketsc-mylibrarynode_modulesgruntlibutiltask.js:220:11
    at process._tickCallback (internal/process/next_tick.js:61:11)
  message: 'Unexpected token: name «a», expected: punc «;»',
  filename: 'mylibrary.js',
  line: 9,
  col: 14469,
  pos: 60510 }
>> Uglifying source dist/mylibrary/mylibrary.js failed.
Warning: Uglification failed.
Unexpected token: name «a», expected: punc «;». 
Line 9 in dist/mylibrary/mylibrary.js
 Use --force to continue.
Aborted due to warnings.

在这两个版本中,grunt-contrib-uglify插件的设置方式相同

grunt.initConfig({
    uglify: {
        options: {
            sourceMap: false
        },
        default: {
            files: {
                'dist/mylibrary/mylibrary.min.js': ['dist/mylibrary/mylibrary.js']
            }
        }
    },
    ...
});

插件中唯一的变化是现在是"4.0.1",而以前我使用的是"1.0.2"......但即使变回来,它也会抛出完全相同的错误......所以我假设它是原始文件...

有没有办法像以前一样输出.js文件?

所以在 Webpack 4

mode: "production"

实际上输出一个无空格的版本,很快你设置为

mode: "development"

它输出正确的美化文件,从那里很容易跟进错误。

最新更新