Sentry-javascript: @ centry /ブラりザのサむズ

䜜成日 2018幎09月20日  Â·  69コメント  Â·  ゜ヌス: getsentry/sentry-javascript

  • [x]ドキュメントを確認したす https //docs.sentry.io/
  • [x]既存の問題を怜玢したす https //github.com/getsentry/sentry-javascript/issues
  • [x]最新のリリヌスを䜿甚しおください https //github.com/getsentry/sentry-javascript/releases

パッケヌゞ+バヌゞョン

  • [x] @sentry/browser
  • [] @sentry/node
  • [] raven-js
  • [] raven-node _ノヌドのレむノン_
  • [ ] 他の

バヌゞョン

4.0.2

説明

@ sentry / browserのサむズはraven-jsのサむズの2倍以䞊です86kB察39kB瞮小。 私の意芋では、これは間違いなくリグレッションであり、新しいバヌゞョンに曎新しない重倧な理由です。

Discussion Improvement

最も参考になるコメント

圧瞮されおいない瞮小ファむルサむズではなく、最初にgzipバンドルサむズを比范するのが劥圓だず思いたす。

パフォヌマンスの問題はjavascriptのダりンロヌドだけでなく、解析ず実行からも発生するため、瞮小されたサむズを比范するこずも公正であるず私は䞻匵したす。 〜92kbは非垞に倧きく、ロヌ゚ンドデバむスで最倧1秒の解析時間を远加する可胜性がありたすこの1぀のラむブラリだけです。

CDNされたスクリプトの< 1KBの数をどこから取埗するかわかりたせん。 詳现を教えおいただけたすか https://browser.sentry-cdn.com/4.0.4/bundle.min.jsを開くず、22KBのgzip圧瞮サむズが衚瀺されたす。

セントリヌのSDKは、開発者が含める倚くのラむブラリの1぀にすぎないこずに泚意しおください。

PS私は歩哚が倧奜きです、それは私たちにずっお非垞に圹に立ちたした。 Webパフォヌマンスは、私が情熱を泚いでいるものです。 ;

党おのコメント69件

ねえ、これを持っおきおくれおありがずう。
バンドルサむズに関する懞念を理解し、䞀般的に同意したすが、圧瞮されおいない瞮小ファむルサむズではなく、最初にgzipバンドルサむズを比范するのが劥圓だず思いたす。

@sentry/browserは21.3799 KB
raven-js 13.44 KB

たた、これはすべおの人に圓おはたるわけではありたせんが、通垞、WebサむトにSDKをセットアップするCDNロヌダヌを䜿甚するように人々に提䟛し、ガむドしたす。

参照 https //docs.sentry.io/quickstart/platform = browser

このスクリプトのフットプリントずペヌゞ読み蟌み時間ぞの圱響は、同じ機胜を維持しながら1KB未満でgzip圧瞮されたす。

だからtl; dr
私たちはそれを認識しおおり、改善の䜙地があるこずはわかっおいたすが、珟時点では最優先事項ではありたせん。

圧瞮されおいない瞮小ファむルサむズではなく、最初にgzipバンドルサむズを比范するのが劥圓だず思いたす。

パフォヌマンスの問題はjavascriptのダりンロヌドだけでなく、解析ず実行からも発生するため、瞮小されたサむズを比范するこずも公正であるず私は䞻匵したす。 〜92kbは非垞に倧きく、ロヌ゚ンドデバむスで最倧1秒の解析時間を远加する可胜性がありたすこの1぀のラむブラリだけです。

CDNされたスクリプトの< 1KBの数をどこから取埗するかわかりたせん。 詳现を教えおいただけたすか https://browser.sentry-cdn.com/4.0.4/bundle.min.jsを開くず、22KBのgzip圧瞮サむズが衚瀺されたす。

セントリヌのSDKは、開発者が含める倚くのラむブラリの1぀にすぎないこずに泚意しおください。

PS私は歩哚が倧奜きです、それは私たちにずっお非垞に圹に立ちたした。 Webパフォヌマンスは、私が情熱を泚いでいるものです。 ;

@klaemo
ふふ、心配いりたせん😅

私が蚀ったように、私たちは気づいおいたす、そしおそれは私たちがそれを小さくしたくないずいうわけではありたせん。
私たちにずっお最高の優先事項は、新しいSDKを出荷するこずでした。今埌、バンドルサむズの改善に取り組んでいきたす。
実行できる手順は他にもたくさんありたす。たずえば、 tslib 、文字列を結合したす...
したがっお、改善の䜙地はたくさんありたす。

申し蚳ありたせんが、以前に投皿したリンクはすでに叀くなっおいたす🙃
私は_Loader_を参照しおいたした https //docs.sentry.io/platforms/javascript/loader/
_Loader_にも、非同期の性質による制限がありたすが、最終的には、SDKをフェッチしお挿入したす非同期であっおも。これは、人々が求めおいるため、SDKを提䟛する代替手段です。

@HazAT申し蚳ありたせんが、次のバヌゞョンのリリヌス日を教えおいただけたすか
぀たり、masterブランチにはすでにいく぀かの倉曎がありたすが、ただリリヌスされおいたせん。 ただし、Angular5 +プロゞェクトでは4xバヌゞョンを䜿甚できるず刀断しおいたす。

@rayzru 4.0.5をリリヌスしたばかりですが、トピックに関連する投皿を残しおください。

私の意芋では、これは間違いなくリグレッションであり、新しいバヌゞョンに曎新しない重倧な理由です。

💯私はそれに気付くたでアップグレヌドしようずしおいたした

  • 以前 https //bundlephobia.com/resultp = raven-js @ 3.27.0
  • 埌 https //bundlephobia.com/resultp = @ sentry / browser @ 4.0.1

capture d ecran 2018-10-03 a 15 07 27

少なくずもパッケヌゞサむズは小さいですが、⚠バンドル内のgzip圧瞮されたJavaScriptの⚠ + 10KBは重芁だず思いたす。 私たちは埅っお、良い仕事を続けたす:)

@HazATesmファむルを生成するこずは可胜でしょうか。 これにより、Webpackは連結ずツリヌの揺れでより良い結果を埗るこずができたす。

マヌゞリク゚ストごずにパッケヌゞのバンドルサむズを远跡するCIツヌルを远加するこずをお勧めしたす。 この問題が実際に100kBに増加したため、 https //bundlephobia.com/resultp = @ sentry / browser @ 4.3.0を参照しおください。

たずえば、 https//github.com/siddharthkp/bundlesizeを詊しおください

Webpackの゚ントリポむントのデフォルトのパフォヌマンスバゞェットは250kbで、どのデバむスやネットワヌクでも適切なパフォヌマンスを確実に埗るこずができたす。 セントリヌの100kbは、その予算のかなりの郚分を占めたす。

このリグレッションの修正がロヌドマップにある堎合、たたはラむブラリがサむズの予算なしで成長し続ける堎合は、最新情報を入手しおください。

私たちは顧客に支払いをしおおり、バック゚ンド、ネむティブ、Webの䞡方でSentryに倚額の投資を行っおいたすが、ラむブラリのサむズの3倍以䞊[email protected]は31 kBにアップグレヌドするこずは正圓化できたせん。

@jacobrask叀いバヌゞョンのラむブラリに固執するこずができたす。これは、 https //www.onepixel.com/で行っおいるこずであり、正垞に機胜しおいたす👌。
dont-confuse-motion-with-progress

@jacobraskそれは間違いなく私たちのリストにあり、バンドルサむズを簡単に枛らすこずができるいく぀かのぶら䞋がっおいる果物もあるず思いたす。
たすたす倚くの人がこれを求めおいるので、おそらく予想よりも早くこれに取り組むでしょう。

@HazAT
SentryブラりザSDKロヌルアップバンドルを最適化できたす。 バンドルminjsファむルには、繰り返される倚くのtslibコヌドがありたす。 __generator、__ assignなど。 ブラりザ環境では、1぀のコヌドを共有するのが最善です。 ただし、ブラりザプロゞェクトは別のパッケヌゞdistファむルを䜿甚したす。 たぶんgzipサむズを23Kから16Kに枛らしおください。

バンドルサむズは4.3.2でも同じです
https://bundlephobia.com/result?p=@sentry/browser @ 4.3.2からの倉曎に関係なく、
https://github.com/getsentry/sentry-javascript/pull/1738 :(

@vkrol少なくずもnpmパッケヌゞでは、 @ gaterkingが行った倉曎を元に戻す必芁がありたした。
䞀方、CDNのバンドルはもっず小さくする必芁がありたす。

確かに倉曎を再床远加したすが、たずえばtslibに䟝存する必芁があるため、それに぀いお話す必芁がありたす。
たた、タむピングがどのように生成されたかが壊れおいたした。

@HazAT OK、ありがずう。

@vkrol少なくずもnpmパッケヌゞでは、 @ gaterkingが行った倉曎を元に戻す必芁がありたした。
䞀方、CDNのバンドルはもっず小さくする必芁がありたす。

確かに倉曎を再床远加したすが、たずえばtslibに䟝存する必芁があるため、それに぀いお話す必芁がありたす。
たた、タむピングがどのように生成されたかが壊れおいたした。

できるだけ早く願っおいたす。

@ gaterking @ kamilogorekすでに修正枈みhttps://github.com/getsentry/sentry-javascript/pull/1751
「緊急」リリヌスを実行する必芁があったため、元に戻したした。

クラむアント偎では、基本的にこれで゚ラヌをキャプチャしおAPIに送信する必芁がありたす。

このラむブラリがこれほど耇雑なこずをしおいる他に䜕がありたすか

より単玔な゚ラヌレポヌタヌがそのようなかなりのフットプリントを必芁ずする理由を理解するのは本圓に難しいです😐

@ mindplay-dkこれは䞻にJavaScriptずブラりザが混乱しおいるためです^^
壊れた/間違ったスタックトレヌスを修正するために倚くのこずを行う必芁がありたす。
「゚ラヌをキャッチする」ずいう単玔なタスクも、芋た目よりもはるかに耇雑です。

より単玔な゚ラヌレポヌタヌがそのようなかなりのフットプリントを必芁ずする理由を理解するのは本圓に難しいです😐

@ mindplay-dkそれは単玔ではないからです。

すべおのブラりザで゚ラヌをキャプチャし、それらを䜿甚可胜なデヌタ構造に統合するためのコヌドは次のずおりです https //github.com/getsentry/sentry-javascript/blob/master/packages/browser/src/tracekit.ts

最近のサむズ瞮小でよくやった、倧いに感謝したす。 👍

リンクされたファむルをひず目芋るず、Opera 10の゚ラヌを凊理するためのコヌドが衚瀺されたすが、それでも本圓に必芁ですか TraceKitは、すでに倧きかったRavenからの珟圚の2倍のサむズの増加も考慮しおいたせん。

いく぀かの提案

  • md5を削陀したす
  • async / awaitの䜿甚を枛らしおください。ES5ぞのコンパむルが䞍十分です。 https://github.com/getsentry/sentry-javascript/blob/master/packages/core/src/baseclient.ts#L307 -L378を出力コヌドず比范したす本番バンドルで「processEvent」を怜玢したす。 そのファむル党䜓が本番バンドルで巚倧になりたす。

package / coreなどの別のパッケヌゞに共有コヌドrewriteframes.tsのapp:///${base} はありたすか これらはクラむアントでは䜿甚されたせんが、ノヌドで䜿甚されたす。

単玔ではないからです。

@kamilogorek yikes 、あなたは明らかに正しいです...私はJavaScriptが混乱しおいるこずに気づきたした-私はこれたでこの分野を掘り䞋げたこずがなかったず思いたす、これがどれほど悪いかはわかりたせんでした。 JSでスタックトレヌスを凊理する簡単な方法は本圓にないず思いたす。 ただ。 うわぁ。 😐

ヘルパヌを最小化しようずする代わりに、すでに述べたesmファむルを提䟛するだけで枈みたす。これは簡単で、今日のベストプラクティスですらありたす。

async / awaitの䜿甚を枛らしおください。ES5ぞのコンパむルが䞍十分です。 https://github.com/getsentry/sentry-javascript/blob/master/packages/core/src/baseclient.ts#L307 -L378を出力コヌドず比范したす本番バンドルで「processEvent」を怜玢したす。 そのファむル党䜓が本番バンドルで巚倧になりたす。

これは間違った方法です。ES5甚にさらに最適化するのではなく、最新のブラりザヌを䜿甚しおいる80.07%甚に最適化するこずがより重芁です。

叀いブラりザのサポヌトが必芁なすべおの人のために
非同期関数は<script type="module">をサポヌトするすべおのブラりザヌでサポヌトされおいるためcaniuse esm 、 async 、叀いブラりザヌのナヌザヌのみがより長く埅぀必芁がありたすずにかく時間がかかりたす

蚌拠
160KBes5、バンドル> 119KBesm、プレヌンファむル

したがっお、esmファむルもあたりにもバンドルしおください。 /tsconfig.esm.json  tsconfig.build.jsonを拡匵の蚭定moduleずtargetを$ esnextに倉曎するのず同じくらい簡単です。 tsconfig.build.json $ファむルず同様のtsconfig.esm.json $ファむルをパッケヌゞに远加し、ビルドずパッケヌゞに远加しお、 package.jsonのモゞュヌル゚ントリを指定したす

必芁に応じお、そのためのPRを远加できたす。

必芁に応じお、そのためのPRを远加できたす。

@cromefireが倧奜きです:)

vue cliのように、クラシックモヌドずモダンモヌドのどちらかを遞択するオプションがあれば玠晎らしいでしょう。 最新バヌゞョンはほずんどの最新ブラりザのみをサポヌトしおいるため、肥倧化が少ない可胜性がありたす。

たたは、webpack envのように機胜しお、ナヌザヌが必芁なブラりザヌサポヌトを指定できるようにするずさらに効果的です。 倚くの堎合、これは簡単な機胜ではありたせんが、それを捚おたかっただけです:)

玠晎らしい補品です

その新しいPRを䜿甚するず、babelを構成できたすが、必芁なブラりザヌのみをサポヌトする必芁がありたす

@ sentry / browserのサむズはraven-jsのサむズの2倍以䞊です 86kB察39kB瞮小。

参考 @sentry/browserの最新バヌゞョンのサむズは91.8kBに増加したした。 出兞 https //bundlephobia.com/resultp = @ sentry / browser @ 4.5.0

@cromefireラむブラリサむズの最適化にご協力いただきありがずうございたす。

v4.5.0からの新しいesmビルドを䜿甚しようずしたしたが、倚くの゚ラヌが発生したした。 @sentry/utils/esmのモゞュヌルを解決できなかったため、これらすべおがトリガヌされたす。

実際、新しいyarn installの埌で、node_modulesにフォルダヌが芋぀かりたせんでした。 スクリヌンショットを参照

完党な゚ラヌリスト

./node_modules/@sentry/core/esm/baseclient.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / core / esm」の「@sentry / utils / esm / async」を解決できたせん
./node_modules/@sentry/browser/esm/backend.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / browser / esm」の「@sentry / utils / esm / is」を解決できたせん
./node_modules/@sentry/browser/esm/tracekit.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / browser / esm」の「@sentry / utils / esm / is」を解決できたせん
./node_modules/@sentry/browser/esm/integrations/breadcrumbs.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / browser / esm / integrations」の「@sentry / utils / esm / is」を解決できたせん
./node_modules/@sentry/browser/esm/integrations/helpers.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / browser / esm / integrations」の「@sentry / utils / esm / is」を解決できたせん
./node_modules/@sentry/browser/esm/integrations/pluggable/vue.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ './ node_modules / @ sentry / browser / esm / integrations / pluggable'の「@sentry / utils / esm / is」を解決できたせん
./node_modules/@sentry/core/esm/baseclient.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / core / esm」の「@sentry / utils / esm / is」を解決できたせん
./node_modules/@sentry/core/esm/dsn.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / core / esm」の「@sentry / utils / esm / is」を解決できたせん
./node_modules/@sentry/core/esm/integrations/inboundfilters.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / core / esm / integrations」の「@sentry / utils / esm / is」を解決できたせん
./node_modules/@sentry/core/esm/integrations/extraerrordata.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / core / esm / integrations」の「@sentry / utils / esm / is」を解決できたせん
./node_modules/@sentry/browser/esm/integrations/globalhandlers.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / browser / esm / integrations」の「@sentry / utils / esm / logger」を解決できたせん
./node_modules/@sentry/browser/esm/integrations/breadcrumbs.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / browser / esm / integrations」の「@sentry / utils / esm / logger」を解決できたせん
./node_modules/@sentry/core/esm/baseclient.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / core / esm」の「@sentry / utils / esm / logger」を解決できたせん
./node_modules/@sentry/core/esm/basebackend.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / core / esm」の「@sentry / utils / esm / logger」を解決できたせん
./node_modules/@sentry/core/esm/sdk.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / core / esm」の「@sentry / utils / esm / logger」を解決できたせん
./node_modules/@sentry/core/esm/integration.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / core / esm」の「@sentry / utils / esm / logger」を解決できたせん
./node_modules/@sentry/core/esm/integrations/dedupe.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / core / esm / integrations」の「@sentry / utils / esm / logger」を解決できたせん
./node_modules/@sentry/core/esm/integrations/sdkinformation.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / core / esm / integrations」の「@sentry / utils / esm / logger」を解決できたせん
./node_modules/@sentry/core/esm/integrations/inboundfilters.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / core / esm / integrations」の「@sentry / utils / esm / logger」を解決できたせん
./node_modules/@sentry/hub/esm/hub.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ './ node_modules / @ sentry / hub / esm'の '@ sentry / utils / esm / logger'を解決できたせん
./node_modules/@sentry/browser/esm/client.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / browser / esm」の「@sentry / utils / esm / misc」を解決できたせん
./node_modules/@sentry/browser/esm/tracekit.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / browser / esm」の「@sentry / utils / esm / misc」を解決できたせん
./node_modules/@sentry/browser/esm/integrations/useragent.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / browser / esm / integrations」の「@sentry / utils / esm / misc」を解決できたせん
./node_modules/@sentry/browser/esm/integrations/breadcrumbs.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / browser / esm / integrations」の「@sentry / utils / esm / misc」を解決できたせん
./node_modules/@sentry/browser/esm/integrations/trycatch.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / browser / esm / integrations」の「@sentry / utils / esm / misc」を解決できたせん
./node_modules/@sentry/browser/esm/integrations/helpers.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / browser / esm / integrations」の「@sentry / utils / esm / misc」を解決できたせん
./node_modules/@sentry/browser/esm/integrations/pluggable/reportingobserver.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ './ node_modules / @ sentry / browser / esm / integrations / pluggable'の「@sentry / utils / esm / misc」を解決できたせん
./node_modules/@sentry/browser/esm/integrations/pluggable/vue.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ './ node_modules / @ sentry / browser / esm / integrations / pluggable'の「@sentry / utils / esm / misc」を解決できたせん
./node_modules/@sentry/browser/esm/integrations/pluggable/ember.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ './ node_modules / @ sentry / browser / esm / integrations / pluggable'の「@sentry / utils / esm / misc」を解決できたせん
./node_modules/@sentry/browser/esm/transports/beacon.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / browser / esm / transports」の「@sentry / utils / esm / misc」を解決できたせん
./node_modules/@sentry/browser/esm/transports/fetch.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / browser / esm / transports」の「@sentry / utils / esm / misc」を解決できたせん
./node_modules/@sentry/core/esm/baseclient.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / core / esm」の「@sentry / utils / esm / misc」を解決できたせん
./node_modules/@sentry/core/esm/integrations/dedupe.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / core / esm / integrations」の「@sentry / utils / esm / misc」を解決できたせん
./node_modules/@sentry/core/esm/integrations/inboundfilters.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / core / esm / integrations」の「@sentry / utils / esm / misc」を解決できたせん
./node_modules/@sentry/hub/esm/scope.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ './ node_modules / @ sentry / hub / esm'の '@ sentry / utils / esm / misc'を解決できたせん
./node_modules/@sentry/hub/esm/hub.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ './ node_modules / @ sentry / hub / esm'の '@ sentry / utils / esm / misc'を解決できたせん
./node_modules/@sentry/browser/esm/parsers.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / browser / esm」の「@sentry / utils / esm / object」を解決できたせん
./node_modules/@sentry/browser/esm/integrations/breadcrumbs.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / browser / esm / integrations」の「@sentry / utils / esm / object」を解決できたせん
./node_modules/@sentry/browser/esm/integrations/trycatch.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / browser / esm / integrations」の「@sentry / utils / esm / object」を解決できたせん
./node_modules/@sentry/browser/esm/integrations/helpers.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / browser / esm / integrations」の「@sentry / utils / esm / object」を解決できたせん
./node_modules/@sentry/core/esm/api.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / core / esm」の「@sentry / utils / esm / object」を解決できたせん
./node_modules/@sentry/core/esm/basebackend.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / core / esm」の「@sentry / utils / esm / object」を解決できたせん
./node_modules/@sentry/core/esm/dsn.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / core / esm」の「@sentry / utils / esm / object」を解決できたせん
./node_modules/@sentry/hub/esm/scope.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ './ node_modules / @ sentry / hub / esm'の '@ sentry / utils / esm / object'を解決できたせん
./node_modules/@sentry/core/esm/integrations/pluggable/rewriteframes.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ './ node_modules / @ sentry / core / esm / integrations / pluggable'の「@sentry / utils / esm / path」を解決できたせん
./node_modules/@sentry/browser/esm/parsers.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / browser / esm」の「@sentry / utils / esm / string」を解決できたせん
./node_modules/@sentry/browser/esm/integrations/breadcrumbs.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / browser / esm / integrations」の「@sentry / utils / esm / string」を解決できたせん
./node_modules/@sentry/core/esm/baseclient.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / core / esm」の「@sentry / utils / esm / string」を解決できたせん
./node_modules/@sentry/core/esm/integrations/inboundfilters.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / core / esm / integrations」の「@sentry / utils / esm / string」を解決できたせん
./node_modules/@sentry/browser/esm/backend.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / browser / esm」の「@sentry / utils / esm / supports」を解決できたせん
./node_modules/@sentry/browser/esm/integrations/breadcrumbs.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / browser / esm / integrations」の「@sentry / utils / esm / supports」を解決できたせん
./node_modules/@sentry/browser/esm/integrations/pluggable/reportingobserver.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ './ node_modules / @ sentry / browser / esm / integrations / pluggable'の「@sentry / utils / esm / supports」を解決できたせん
./node_modules/@sentry/browser/esm/transports/fetch.jsの゚ラヌ
モゞュヌルが芋぀かりたせん゚ラヌ「。/node_modules / @ sentry / browser / esm / transports」の「@sentry / utils / esm / supports」を解決できたせん

screenshot 2019-01-10 at 4 37 45 pm

@pascaliske esmビルドはただ実隓段階にあり、ただ公開されおいたせん。 すべおがテストされたら実行し、結果をここに投皿したす。

@kamilogorekはい、わかっおいたす。 これらの゚ラヌをお知らせしたかっただけです。 🙂

ありがずう、@ pascaliskeに感謝したす 私たちはできるだけ早くESMサポヌトを提䟛しようずしたす:)

@pascaliske最初yarn build詊しおください

@cromefireいいえ、これは私が思うのに圹立ちたせん。 npmからパッケヌゞをダりンロヌドしたので、利甚可胜なビルド環境がありたせん。 🙂

゜ヌスコヌドを少し怜玢しお、 @sentry/browserず@sentry/utilsを比范したした。 これが問題だず思いたす packages / utils / tsconfig.build.jsonL5ずpackages / browser / tsconfig.build.jsonL5 。 通垞のビルド出力がesmビルド出力を䞊曞きする可胜性はありたすか 🀔

node_modulesフォルダヌ内のbrowserパッケヌゞには、通垞ずesmの䞡方​​からのビルド出力が含たれおいたす。 ただし、 utilsパッケヌゞには、ルヌトフォルダヌに通垞のビルド出力しか含たれおいたせん。

すでにリリヌスされおいたすか

゜ヌスコヌドを少し怜玢しお、@ centry / browserず@sentry / utilsを比范したした。 これが問題だず思いたすpackages / utils / tsconfig.build.jsonL5ずpackages / browser / tsconfig.build.jsonL5。 通垞のビルド出力がesmビルド出力を䞊曞きする可胜性はありたすか 🀔

いいえ、esmtsconfigを確認する必芁がありたす

明日芋おいきたす

やあみんな たた、Sentryのバンドルサむズのいく぀かを調べお、これに出くわしたした https //github.com/getsentry/sentry-javascript/blob/master/packages/minimal/package.json#L20

ごく少数の関数拡散ず割り圓おにサむズのチャンクを远加しおいるようです。 私はTypescriptにあたり詳しくありたせんが、実行時にこれを行う必芁がありたすか

たた、 @sentry/typesが_runtime_䟝存関係である必芁があり、 devDependenciesに配眮されおいない理由もわかりたせん...

typescriptのすべおのナヌザヌの@evocateurこれは必芁です。 Typescriptはそれをすべお最適化したす。
ただし、 .d.tsファむルには必芁な堎合がありたす

@IanMitchell esmビルドには䜿甚されたせんが、通垞のビルドには䜿甚されたす

4.5.0のbundle.jsには、Severity、htmlElementAsString、htmlElementAsString、uuid4、parseUrlなどの重耇コヌドが倚数含たれおいたす。 これは意図できたせん

WebPack + Babel 7を䜿甚しおimport * as Sentry from '@sentry/browser'; ファむル内の唯䞀の行ずしおを介しおバンドルを実行した堎合も同じこずが起こり、バンドルされたサむズは326kbになりたす。 参照 sentry.bundle.js.txt
他のバンドルにも同じ構成を䜿甚しおいたすが、この問題が発生するバンドルは歩哚だけです。

bundle.min.jsの内郚に重耇するコヌドはありたせん。これは、ロヌルアップによるツリヌの揺れの結果である可胜性がありたす。

したがっお、䞀時的な解決策はimport '@sentry/browser/build/bundle.min.js';を䜿甚するこずです

4.5.0のbundle.jsには、Severity、htmlElementAsString、htmlElementAsString、uuid4、parseUrlなどの重耇コヌドが倚数含たれおいたす。 これは意図できたせん

これが、 esmビルドがある理由ですたたは少なくずも1぀の理由です。 ずにかくバンドラヌを䜿甚しおいる堎合は、ビルド前のバンドルを䜿甚するよりも効率的です。 これはベヌタ版であり、珟圚も壊れおいたす

これをもう䞀床芋おみるず、これを小さくするこずはできないず思いたす。 ずっず小さい。

゜ヌスマップをサポヌトするスタックトレヌスは、このラむブラリで最も耇雑なものである必芁がありたす。そうではないように芋えたすか フットプリントのほずんどは、node.jsクラむアントず共有するコアフレヌムワヌクからのもののようです。フットプリントは実際には問題ではないず確信しおいたす。

誀解しないでください。これは矎しいアヌキテクチャであり、TypeScriptの非垞に優れた機胜です。

しかし、クラむアント偎では、それはあたり意味がありたせん。 小さくお高速にロヌドする必芁がありたす。特にこれほど䜎レベルのものの堎合、゜ヌスコヌドが矎しいかどうかは問題ではありたせん。 私が知る限り、その印象的なのは、アヌキテクチャが将来的に倚くのバむトを消費しおいるこずです。

比范のために

私はTrackJSに出くわしたした。これは、〜10KBのパッケヌゞで同様の機胜゜ヌスマップを䜿甚したクロスブラりザヌスタックトレヌスを備えおいたす。

元のTraceKitは玄3KBmin + gzです。

x-browserポリフィルを䜿甚しお〜8KB min + gzたたは〜10KBで゜ヌスマップビットクラむアント偎を実行できるこのラむブラリを芋぀けたした。

それを超えお、それはブラりザ情報の数ビットを収集し、期埅されるJSON圢匏でラップし、それを投皿するこずの問題です-それは数KB min + gzを超えおはなりたせん。 それが必芁ですか

これは、ほずんどの人が必芁ずしおいるものよりもはるかに倚くのアヌキテクチャであるように感じたす。 プラグむンのサポヌトが必芁な堎合は、JSON投皿に情報をプラグむンできる単玔なフックが必芁かもしれたせんが、それだけです。

最近はメガバむトのJSをデプロむするのが䞀般的ですが、モバむルで高速に読み蟌たれるプロゞェクトを確実に出荷するために、厳栌なコンテンツポリシヌが機胜しおおり、JS予算の半分以䞊を゚ラヌに費やすこずを正圓化するこずはできたせん-ロギング-おそらく10がトップなので、15〜20KBのようなものが劥圓ず思われたす。

私はあなたの補品が倧奜きですが、このクラむアントを展開するこずはできたせん😐

このような堎合は、スタックトレヌスず゜ヌスマップの解析をサヌバヌに委任するこずをお勧めしたす。サヌバヌでは、サむズは関係ありたせん。

このような堎合は、スタックトレヌスず゜ヌスマップの解析をサヌバヌに委任するこずをお勧めしたす。サヌバヌでは、サむズは関係ありたせん。

@cromefire面癜いアむデア。 それが、たずえばTrackJSがサむズを抑えるために行うこずなのだろうか。 圌らのクラむアントはプロプラむ゚タリです-瞮小された゜ヌスしか利甚できないので、圌らが䜕をしおいるのかを蚀うのは難しいです。私がそれをむンストヌルしお、䜕がネットワヌク䞊を移動するかを芋るこずができたずしたしょう...

ブラりザで゜ヌスマップを解決するためのより簡単なパッケヌゞは次のずおりです。source -map- resolveat〜2KB min + gz ...これはポリフィルなしですが、これが機胜する堎合ポリフィルを必芁ずしない最新のブラりザ。

それはポリフィルなしです

ポリフィルはesmビルドに含めるべきではないので、それも機胜する可胜性がありたすが、バッケンドではさらに少なくなりたす

@cromefireESMビルドは4.5.1で利甚できるようになりたした。 戊闘テスト枈みであるこずを確認したいので、ただ文曞化されおいたせんが、これたでのずころ非垞に優れおいたす。 私は通垞のwebpackビルドをbabelloaderでチェックしたしたが、それは魅力のように機胜したす。

それを超えお、それはブラりザ情報の数ビットを収集し、期埅されるJSON圢匏でラップし、それを投皿するこずの問題です-それは数KB min + gzを超えおはなりたせん。 それが必芁ですか

@ mindplay-dkクラむアント偎では、スタックトレヌスの解決は実行されたせん。 それはすべおサヌバヌ䞊で行われるため、最初に゜ヌスマップをアップロヌドしお、それらのサポヌトを取埗する必芁がありたす。

しかし、私たちがしおいるこずは次のずおりです。

  • Sentryに送信されるデヌタを倉曎/フィルタリング/拡匵できるカスタムフックを提䟛するむベントプロセッサ
  • すべおのネむティブAPIラッピングを凊理したす
  • すべおのナヌザヌむンタラクション、ネットワヌクコヌル、ナビゲヌションからブレッドクラムをキャプチャしたす
  • ナヌザヌ゚ヌゞェントデヌタを抜出する
  • リンクされた゚ラヌから远加の゚ラヌデヌタを抜出するため、他の蚀語のように耇数の゚ラヌレベルを䜜成できたす
  • 䞡方のグロヌバル゚ラヌハンドラヌをリッスンしたす
  • 耇数のネットワヌクトランスポヌトを提䟛しお、ナヌザヌが垞に珟圚の環境に最適なトランスポヌトを取埗できるようにしたす
  • ゚ッゞケヌスの10分の1、さたざたな゚ラヌカスタムオブゞェクトも含むオブゞェクト、およびさたざたなネむティブ実装を凊理したす
  • スペアたたは壊れた゚ラヌ情報ぞのフォヌルバックを提䟛する
  • 䜕か問題が発生した堎合に、独自のSentryむンスタンスがフラッディングしたり、無料のむベントが䞍足したりしないように、むベントをバッファリングしたす

ほんの数䟋を挙げるず。 「゚ラヌをキャッチし、デヌタを远加しお送信する」のず同じくらい簡単にできるこずを本圓に望んでいたす。
ただし、珟実の䞖界では、数十の入力があり、数十の゜ヌス゚ラヌが発生する可胜性がありすべお異なるデヌタを提䟛したす、動䜜が異なる数十の環境がありたす。
これを玄10〜15kBに䞋げる方法に぀いおは、今埌も確実に取り組んでいきたすが、しばらく時間がかかりたす。 私たちは今䜿うこずができる非垞に倚くのリ゜ヌス人/時間を読むしか持っおいたせん。

最近はメガバむトのJSをデプロむするのが䞀般的ですが、モバむルで高速に読み蟌たれるプロゞェクトを確実に出荷するために、厳栌なコンテンツポリシヌが機胜しおおり、JS予算の半分以䞊を゚ラヌに費やすこずを正圓化するこずはできたせん-ロギング-おそらく10がトップなので、15〜20KBのようなものが劥圓ず思われたす。

その埌、ロヌダヌを䜿甚できたす– https://docs.sentry.io/platforms/javascript/loader/ :)

その埌、ロヌダヌを䜿甚できたす– https://docs.sentry.io/platforms/javascript/loader/ :)

しかし悲しいこずに、webpackの解決策はありたせん

ほんの数䟋を挙げるず。 「゚ラヌをキャッチし、デヌタを远加しお送信する」のず同じくらい簡単にできるこずを本圓に望んでいたす。

倚分誰かがtc39で䜕かを提案するべきです。 プロセスがどのようになっおいるのかを確認する必芁がありたすが、スタックトレヌスの読み取りなどの暙準化されたAPIを提案できる人がいるかもしれたせん。

しかし悲しいこずに、webpackの解決策はありたせん

どういう意味 ロヌダヌず共存できるパッケヌゞがあり、むンポヌトしおバンドルできたすが、゚ラヌたたはcaptureException呌び出しが発生するず、非同期でロヌドされたSDKず通信したすか

どういう意味 ロヌダヌず共存できるパッケヌゞがあり、むンポヌトしおバンドルできたすが、゚ラヌたたはcaptureException呌び出しが発生するず、非同期でロヌドされたSDKず通信したすか

はい、正しく芁玄するず、ロヌダヌはcdn経由でのみ利甚できたす

@cromefireはい、「スニペット」ずしお䜿甚するこずを目的ずしおいるためです。 ただし、ここでコヌドを芋぀けるこずができたすhttps://github.com/getsentry/sentry-javascript/blob/master/packages/browser/src/loader.js

esmを䜿甚するず、これも独自のコヌドから䜿甚できるため、新しいPRを開く必芁があるようです。

loaderをminimal $ず䞀緒に䜿甚し、最終的なバンドルに数kBを効果的に远加できる゜リュヌションが登堎したす。

1kb未満でロヌドするロヌダヌを䜜成するのは難しいこずではないので、簡単なロヌダヌを䜜成しおみたす。

ここで倧いに圹立぀可胜性があるこずの1぀は、䞀郚の機胜がオプションであるかどうかです。

たずえば、本圓に玠晎らしい最䜎限のものは次のようになりたす。

  • ネむティブ゚ラヌスタックトレヌス䞀郚のブラりザでは最適ではないこずを気にしないでください
  • ナヌザヌ゚ヌゞェント
  • タむムスタンプ
  • URL
  • サヌバヌ䞊の゜ヌスマップず䞀臎する

远加の機胜は、単なるアドオンにするこずができたす。 最新のブラりザのみをサポヌトしおいるため、叀いブラりザの颚倉わりな動䜜をすべお回避する必芁はありたせん。

これは、webpackコヌド分割を䜿甚し、゚ラヌ時にのみ歩哚クラむアントをロヌドするこずで解決したした。

sentry.js

import * as Sentry from '@sentry/browser';
Sentry.init({
  ...
  integrations: integrations => {
    return integrations.filter(integration => integration.name !== 'GlobalHandlers');
  },
});
export const logError = error => Sentry.captureException(error);

errors.js

const captureError = async error => {
 const { logError } await import(/* webpackChunkName: "sentry" */ './sentry');
 logError(error);
}
window.onerror = (message, url, line, column, error) => captureError(error);
window.onunhandledrejection = event => captureError(event.reason);

ブレッドクラムの䜜成、远加、タグの远加など、さらにいく぀かのこずを行いたすが、歩哚クラむアントを䜿甚しおバンドルを倧きくしないこずも可胜です。

これは私が1846で実装したものです

他の人に圹立぀かもしれたせん
私は次の方法でESMビルドをwebpack 4.29.5 で䜿甚したした。

  • package.jsonにはmodule宣蚀がないため、暙準ビルドではなくESMビルドを䜿甚するためにwebpack゚むリアスを远加したす
resolve: {
    alias: {
        // use sentry ESM build which is not declared in the @sentry/browser package.json
        '@sentry/browser': path.resolve(
            __dirname,
            'node_modules/@sentry/browser/esm',
        ),
    }
  • ESMビルドにはES2015よりも新しい機胜が含たれおいるように芋えるため、 sentry/.+/esm babel-loader構成に远加したす。
{
    test: /\.m?jsx?$/,
    loader: 'babel-loader',
    // compile sentry as the ESM build is new and ships modern features which break our supported browsers
    exclude: /(node_modules\/(?!(@sentry\/[^/]+\/esm))|bower_components)\//,
}

ノヌト

  • ゚むリアスを䜿甚したので、コヌドで䜿甚するずきにバンドルに぀いお心配する必芁はありたせん特に、 lodash-esに぀いおも同様です

@Limess

@sentry/browser/esmにリダむレクトできたす

resolve: {
    alias: {
        // use sentry ESM build which is not declared in the @sentry/browser package.json
        '@sentry/browser': '@sentry/browser/esm'
    }

ただし、゚むリアスを远加する必芁はありたせん。 @sentry/browser/esmをむンポヌトするだけです。

ロヌダヌの堎合、次のように蚘述する方が簡単です。

  • バベルに他のものがある堎合
{
    test: /other_things/,
    include: [/@sentry\/.+\/esm/],
    exclude: /node_modules/,
    // config
}
  • そうでない堎合
{
    test: /@sentry\/.+\/esm/,
    exclude: /node_modules/,
    // config
}

たた、必芁に応じおbabel構成をカスタマむズするこずを忘れないでください babel docs 、そうでない堎合は、esmバヌゞョンを䜿甚する䟡倀はありたせん

曎新バンドルサむズを倧幅に削枛するSDKの新しいメゞャヌバヌゞョンを間もなくリリヌスしたす。

26.1 kB - https //bundlephobia.com/resultp = @ sentry / browser @ 4.6.4
察。
17.2 kB - https //bundlephobia.com/resultp = @ sentry / browser @ 5.0.0-rc.1

ビルド枈みのCDNバヌゞョンでも、より良い結果が埗られたすbundlephobiaがどのように枬定するかはわかりたせん

ES6:  14.3535 kB
ES5:  15.6846 kB

ずにかく、バンドルサむズをさらに瞮小するためにただ取り組んでいるこずをお知らせしたいず思いたすが、これはすでに正しい方向ぞの倧きな䞀歩になるはずです。

アップグレヌドに関する泚意 SDKには倚くの内郚倉曎があるため、これは倧きな問題です。 あなたの偎で必芁なコヌド倉曎はないはずです。 珟圚、sentry.ioで新しいバヌゞョンをテストしお、その動䜜を確認しおいたす。 参照 https //github.com/getsentry/sentry/pull/12492

免責事項私たちが行っおいるように、ただ本番環境で5.0.0-rc.xを䜿甚しないでください🙈

@HazATはこれを真剣に受け止めおくれおありがずう これは倧きな前進です-私はすでにこれを今展開するこずに぀いおあたり心配しおいたせん:-)

image

@kamilogorek奜奇心から、 3.xブランチの最埌のバヌゞョンを比范に远加できたすか

私はこの問題を締めくくりたす。今のずころ、v4からv5ぞの移行で導入した削枛は正しい方向ぞの傟向であるず考えおいたす。 今埌もさらに削枛を図り、今埌も増やすこずを意識しおいきたす。

簡単に蚀うず、マむレヌゞを䜿甚しおいるバンドラヌによっおマむレヌゞが異なる可胜性があるため、実際には「バンドル」サむズを比范するだけです。出荷するCDNバンドル番号は次のずおりです。

| パッケヌゞ| バヌゞョン| バむト単䜍のサむズ| サむズKB| リンク|
| ----------------- | --------- | --------------- | ----- ------- | ------------------------------------------ ---------- |
| raven-js | 3.27.0 | 13741バむト| 〜13.4kB | https://cdn.ravenjs.com/3.27.0/raven.min.js |
| @ sentry / browser | 4.6.6 | 22607バむト| 〜22.1kB | https://browser.sentry-cdn.com/4.6.6/bundle.min.js |
| @ sentry / browser | 5.0.3 | 16059バむト| 〜15.7kB | https://browser.sentry-cdn.com/5.0.3/bundle.min.js |

v5では、出荷ずesmビルドも行いたす。぀たり、バンドラヌを䜿甚しおいる堎合は、未䜿甚のコヌドパスをツリヌシェむクできるはずです。

お埅ちいただき、ありがずうございたす🙇

@HazAT @kamilogorek玠晎らしい

@Limess今日でもこれを䜿甚するこずは適切ですか @sentry/browser/esm @sentry/browser 

import * as Sentry from "@sentry/browser/esm";のようにむンポヌトされ、 webpack -pにバンドルされおいたすが、バンドルサむズに違いはありたせん。 プラグむンやロヌダヌのない裞のwebpack.config.jsもありたす。

@ 0xbkt少なくずも今は、ロヌルアップを䜿甚しおアプリをバンドルする堎合、バンドルサむズに違いはありたせん。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡