需求!
打包后的文件自動過濾出sourcemap并壓縮成zip包
項目結(jié)構(gòu):
項目結(jié)構(gòu)圖
說明
首先說明一下為什么會有這樣的需求
因為項目中集成了 sentry
關(guān)于sentry的介紹 請點擊我鳞滨,
如果你已經(jīng)了解了 sentry
那么你會知道在sentry
中我們需要上傳sourcemap來定位具體的源碼行拯啦,但是在實際生產(chǎn)中我們是不能上傳sourcemap的,這不僅僅是不安全的問題褒链。
所有我們會在配置中打開sourcemap
module.exports = {
// ...
productionSourceMap: true,
// ...
}
打開后就會在構(gòu)建后的文件中產(chǎn)生以.map
為后綴的文件
image.png
我們可以結(jié)合
@sentry/webpack-plugin
插件來實現(xiàn)自動上傳sourcemap到sentry
疑苔。更多相關(guān)信息請點擊我上面的一切都很順利,但是我要發(fā)布到生產(chǎn)環(huán)境不可能手動去剔除
.map
文件吧赛惩,于是我就想到用nodejs去處理這個問題趁餐,
思路一 node
將文件拷貝一份,用遞歸遍歷后雷,拷貝的過程中去掉.map文件
然后壓縮文件
image.png
每次在
npm run build
完成后跑一下相關(guān)任務(wù)
思路二 webpack插件
然后我突然意識到可能不需要這么復(fù)雜臀突,是否有對應(yīng)的webpack插件就可以完成這個事情?
于是我找到了一個copy-webpack-plugin
相關(guān)配置
更多信息 請點擊我
看上去很美好一切需要的都有藕筋,but
實際是復(fù)制了一個空文件梳码,然后我把dist改成其他文件就可以了伍掀。然后我發(fā)現(xiàn)是插件的執(zhí)行順序問題
然后我又去看了一遍webpack插件的執(zhí)行鉤子暇藏,并看到該插件issue相關(guān)問題討論
雖然我發(fā)現(xiàn)vuecli3在復(fù)制asses下的文件到dist目錄下也是使用的該插件,但是由于dist是在構(gòu)建以后才生產(chǎn)的盐碱,而插件是在這之前就開始執(zhí)行了,所以是空目錄县好。
最終方案
當(dāng)我放棄這些抱著試一試的態(tài)度去找webpck的zip插件時有了意外的發(fā)現(xiàn)暖混。
這就是我的最終實現(xiàn)方式 非常的簡單 zip-webpack-plugin
new ZipPlugin({
path: path.join(__dirname, 'dist'),
filename: 'dist.zip',
exclude: [/\.map$/]
}),
更多說明 請點擊我
這是我的@sentry/webpack-plugin
配置
Sentry 的配置