記sentry配置后的一點(diǎn)優(yōu)化

需求!

打包后的文件自動(dòng)過(guò)濾出sourcemap并壓縮成zip包

項(xiàng)目結(jié)構(gòu):

項(xiàng)目結(jié)構(gòu)圖

說(shuō)明

首先說(shuō)明一下為什么會(huì)有這樣的需求
因?yàn)轫?xiàng)目中集成了 sentry 關(guān)于sentry的介紹 請(qǐng)點(diǎn)擊我
如果你已經(jīng)了解了 sentry
那么你會(huì)知道在sentry中我們需要上傳sourcemap來(lái)定位具體的源碼行,但是在實(shí)際生產(chǎn)中我們是不能上傳sourcemap的,這不僅僅是不安全的問(wèn)題。
所有我們會(huì)在配置中打開(kāi)sourcemap

module.exports = {
// ...
  productionSourceMap: true,
// ...
}

打開(kāi)后就會(huì)在構(gòu)建后的文件中產(chǎn)生以.map為后綴的文件

image.png

我們可以結(jié)合@sentry/webpack-plugin插件來(lái)實(shí)現(xiàn)自動(dòng)上傳sourcemap到sentry。更多相關(guān)信息請(qǐng)點(diǎn)擊我
上面的一切都很順利,但是我要發(fā)布到生產(chǎn)環(huán)境不可能手動(dòng)去剔除.map文件吧,于是我就想到用nodejs去處理這個(gè)問(wèn)題,

思路一 node

將文件拷貝一份,用遞歸遍歷,拷貝的過(guò)程中去掉.map文件然后壓縮文件

image.png

每次在npm run build完成后跑一下相關(guān)任務(wù)

思路二 webpack插件

然后我突然意識(shí)到可能不需要這么復(fù)雜,是否有對(duì)應(yīng)的webpack插件就可以完成這個(gè)事情?
于是我找到了一個(gè)copy-webpack-plugin

相關(guān)配置

更多信息 請(qǐng)點(diǎn)擊我
看上去很美好一切需要的都有,but
實(shí)際是復(fù)制了一個(gè)空文件,然后我把dist改成其他文件就可以了。然后我發(fā)現(xiàn)是插件的執(zhí)行順序問(wèn)題
然后我又去看了一遍webpack插件的執(zhí)行鉤子,并看到該插件issue相關(guān)問(wèn)題討論
雖然我發(fā)現(xiàn)vuecli3在復(fù)制asses下的文件到dist目錄下也是使用的該插件,但是由于dist是在構(gòu)建以后才生產(chǎn)的,而插件是在這之前就開(kāi)始執(zhí)行了,所以是空目錄。

最終方案

當(dāng)我放棄這些抱著試一試的態(tài)度去找webpck的zip插件時(shí)有了意外的發(fā)現(xiàn)。
這就是我的最終實(shí)現(xiàn)方式 非常的簡(jiǎn)單 zip-webpack-plugin

        new ZipPlugin({
          path: path.join(__dirname, 'dist'),
          filename: 'dist.zip',
          exclude: [/\.map$/]
        }),

更多說(shuō)明 請(qǐng)點(diǎn)擊我
這是我的@sentry/webpack-plugin配置

Sentry 的配置

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容