一、webpack打包文件——dist
dist文件默認是webpack打包之後的最外層文件夾。一個web前端項目,往往會有比較多的文件,而圖片、js、css都是必須的,當然如果是擴展的話,還有很多其他的文件,比如說字體,html,ts,html,jsx等。比如下圖的目錄結構:
二、加密或者路徑或者其它需求
當文件需要加密的時候,就需要將代碼中的一些敏感信息加密。這個時候,我們往往不需要將全部的js代碼變成加密的,全數加密,往往在一定的加密方式下都會將文件增大不少。這個時候就可能需要對其中的一些敏感代碼加密即可了。比如說直接將與後端交互的代碼(簽名或者token類)加密就可以。那我們打包完成以後,將需要加密的代碼在dist文件中找出來,替換成爲我們加密的代碼再發布出去。再或者直接對測試環境的代碼和線上的代碼路徑區分,由於圖片的路徑或者多頁面的時候需要引入一些外部的css或者js,直接引入後路徑也可能在cdn的方式下,測試環境和正式環境不一樣。
三、原理
其實原理非常簡單,就是利用webpack的插件功能,再配合nodejs對文件的處理方式,就可以完成對dist文件的修改了。
四、舉例子
webpack4.0以後的版本,引入一個vue.config.js文件,在插件中添加一個新方法,如下:
localFilterPlugin的js文件是一個對dist文件操作的文件。configureWebpack是vue傳遞的第三方插件方式,而webpack不需要這個。
文件內容如下:
主要就是利用了webpack的‘after-emit’(生成html目標文件後觸發)方法,在文件生成的時候接着往下走,找到需要的js文件(需要其他類型的文件也是一樣操作,比如css文件),配上對字符串的操作(正則比較多),輕鬆替換文件內的內容。