2016-11-27 119 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