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

需求!

打包后的文件自動過濾出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 的配置

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

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

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