2017-09-08 62 views
0

我有一個TypeScript項目成功地使用Webpack來生成ES6,ES6通過babel-minify運行,以樹形結構抖動併產生一個明顯更小的bundle輸出文件。爲webpack中的模塊縮小導入路徑

此文件似乎包含所有的邏輯從我自己的程序,以及爲每個我使用的進口庫的件的邏輯(例如rxjs,lodash等)

然而,我我們正在瀏覽生成的文件,看起來在頂部我們有一些webpack邏輯,然後是原始導入路徑的一個映射到一個實現它的函數,而且,一直到那裏向下,各部分指向依賴關係及其路徑字符串。

現在,考慮到這個webpack包中的所有內容都是獨立的(沒有其他塊),所有源文件名的包含似乎佔用了大量空間。

例如,我期待在一個部分在這裏lodash的isBoolean腳本:

"./node_modules/lodash/isBoolean.js": function(e, t, o) { 
    var r = o("./node_modules/lodash/_baseGetTag.js"), 
     s = o("./node_modules/lodash/isObjectLike.js"); 
    e.exports = function(e) { 
     return !0 === e || !1 === e || s(e) && "[object Boolean]" == r(e) 
    } 
}, 

現在,好像有被採取了很多字了來形容源文件。由於有在這個時候對源文件沒有實際的依賴,爲什麼不能每個鍵只可以用更短的字符串標識符整個更換,如下面的例子:

"a": function(e, t, o) { 
    var r = o("b"), 
     s = o("c"); 
    e.exports = function(e) { 
     return !0 === e || !1 === e || s(e) && "[object Boolean]" == r(e) 
    } 
}, 

其中,「A」,「B」和「c」都代表原始字符串值出現在整個包中的每個地方。這不應該影響所有字符串,而只是導入文件路徑字符串。

在我看來,似乎有人在Webpack compress path names問了一個類似的問題,他們並沒有真正得到滿意的答案。

是否有一些選項或插件我可以使用,可以破壞模塊路徑名?

回答

0

通過閱讀Webpack的源代碼並弄清楚它是如何實際組裝整個事物的。

我在我的配置中有NamedModulesPlugin(可能是來自各種快速啓動之一的工件),並且此插件將所有模塊路徑插入到輸出中。

從配置註釋掉(或只是刪除它)從輸出中完全刪除它(不需要修改)。