2016-11-27 61 views
0

由于我已经有jQueryReact的缩小版本,所以我不需要它们的uglification。我想要的是bundle.js包含完全相同的jquery.min.jsreact.min.js。基本上,我期望webpack只是将它们连接起来。还有一件事,我不想externals。我怎样才能实现它?如何在webpack中排除* .min.js的uglification

const webpack = require("webpack"); 

module.exports = { 
    "entry": ["./src/main/index.js"], 
    "output": { 
    "filename": "[name].js", 
    "libraryTarget": "umd" 
    }, 
    "module": { 
    "rules": [ 
     { 
     "test": /\.(js|jsx)$/, 
     "exclude": /node_modules/, 
     "loader": "babel-loader", 
     "options": { 
      "presets": ["es2015", "react"] 
     } 
     } 
    ] 
    }, 
    "resolve": { 
    "alias": { 
     "jquery": "jquery/dist/jquery.min.js", 
     "React": "react/dist/react.min.js", 
     "ReactDom": "react-dom/dist/react-dom.min.js" 
    } 
    }, 
    "plugins": [ 
    new webpack.optimize.UglifyJsPlugin({ 
     "test": /\.(js)$/, 
     "exclude": /node_modules/, 
     "compress": true 
    }), 
    ] 
} 
+0

尝试排除像这样'exclude:/ \ .min \ .js $ /' – Thaadikkaaran

+0

webpack.optimize.uglifyjsplugin的实现没有排除。见https://github.com/webpack/webpack/blob/master/lib/optimize/UglifyJsPlugin.js – WooD

回答

2

UglifyJsPlugin总是运行在整个webpack JS输出上。没有办法指定任何块或模块来忽略排除。

如果你真的不想让Uglify重新缩小这些文件,你别无选择,只能使用externals而不是alias,并简单地将它们连接起来。

但是,我真的会推荐你不要这样做。让webpack需要并缩小所有内容通常要好得多。只要您使用webpack的DefinePluginprocess.env.NODE_ENV设置为production,最终结果将会相同或更小,并且您不会泄漏React或jQuery到您的窗口。

+0

这是我的想法。我比我的分钟版本更喜欢官方的min版本。我担心我的最小版本会打破生产版本。即使我知道用于生成官方最小版本的官方设置/参数,这些设置/参数可能不适合其他库。这会导致webpack配置中出现很多特殊情况。我会说没有什么比官方更好。不管怎样,谢谢! – WooD

+0

Webpack使用Uglify合理的默认设置,你没有什么可怕的。 Uglify默认设置是非常非常小心,广泛使用和已知不会破坏任何东西,所以不用担心。我有大量的网页制作网站,每月独立访问量超过100万,零投诉。一切总是正常。真的,别担心! – Ambroos

+0

您能否以您指定的方式显示如何排除的示例? – Sawtaytoes

相关问题