shun91 / web-speed-hackathon-2021

https://github.com/CyberAgentHack/web-speed-hackathon-2021
Mozilla Public License 2.0
0 stars 0 forks source link

依存パッケージの最適化 #10

Closed shun91 closed 2 years ago

shun91 commented 2 years ago

2 から分離

https://github.com/CyberAgentHack/web-speed-hackathon-2020/wiki/Web-Speed-Hackathon-Online-%E5%87%BA%E9%A1%8C%E3%81%AE%E3%81%AD%E3%82%89%E3%81%84%E3%81%A8%E8%A7%A3%E8%AA%AC#%E4%BE%9D%E5%AD%98%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%81%AE%E6%9C%80%E9%81%A9%E5%8C%96

TODO https://github.com/shun91/web-speed-hackathon-2021/issues/10#issuecomment-994047596

shun91 commented 2 years ago

image

shun91 commented 2 years ago

jQuery、pako

18 で削除

shun91 commented 2 years ago

core-js

最新版Chromeで動作すればいいので不要なはず。

おもむろに削除したところ、setImmediateが動かなくなった。 Node環境でしか使えないAPIだったらしい。知らなかった。。

Window.setImmediate() - Web APIs | MDN https://developer.mozilla.org/en-US/docs/Web/API/Window/setImmediate

なのでこれはsetTimeout(fn, 0)に修正する。

shun91 commented 2 years ago

regenerator-runtime

async/awaitのpolyfillに必要なはずだけど最新版Chromeで動作すればいいので不要。消す。

shun91 commented 2 years ago

moment

dayjsに置き換える。

利用されてるのは4箇所で、いずれも以下のようなコード。

<time dateTime={moment(user.createdAt).toISOString()}>
  {moment(user.createdAt).locale('ja').format('LL')}
</time>

moment(user.createdAt).toISOString()dayjs(user.createdAt).toISOString()で代替できそう。

JavaScript dayjsはMoment.jsの代替になるか? | nansystem https://nansystem.com/dayjs-alternative-to-momentjs/

moment(user.createdAt).locale('ja').format('LL')は2021年12月14日のような表記へのフォーマットなので、これも代替可能。 dayjs(user.createdAt).format('YYYY年M月D日')でよさそう。

全61件!Moment.js日付フォーマット実例 – console dot log https://blog.capilano-fw.com/?p=908

shun91 commented 2 years ago

現時点で重そうなのは以下。

image

shun91 commented 2 years ago

standardized-audio-context

AudioContextのpolyfillっぽい https://github.com/chrisguttandin/standardized-audio-context

chrome最新版で動けばいので消す

shun91 commented 2 years ago

lodash

https://github.com/CyberAgentHack/web-speed-hackathon-2020/wiki/Web-Speed-Hackathon-Online-%E5%87%BA%E9%A1%8C%E3%81%AE%E3%81%AD%E3%82%89%E3%81%84%E3%81%A8%E8%A7%A3%E8%AA%AC#lodash

利用しているのは以下ファイルのみ。 https://github.com/shun91/web-speed-hackathon-2021/blob/main/client/src/components/foundation/SoundWaveSVG/SoundWaveSVG.jsx#L1

具体的には以下のメソッドを利用している。

shun91 commented 2 years ago

bluebard

https://github.com/CyberAgentHack/web-speed-hackathon-2020/wiki/Web-Speed-Hackathon-Online-%E5%87%BA%E9%A1%8C%E3%81%AE%E3%81%AD%E3%82%89%E3%81%84%E3%81%A8%E8%A7%A3%E8%AA%AC#bluebird--race-timeout

npm lsしてみる

$ npm ls bluebird --depth=10
web-speed-hackathon-2021@ /Users/shun/git/shun91/web-speed-hackathon-2021
└─┬ @web-speed-hackathon-2021/client@0.0.1 -> ./client
  └─┬ gifler@0.3.0 invalid: "github:themadcreator/gifler#v0.3.0" from client
    └── bluebird@3.0.2

gifler https://github.com/themadcreator/gifler

giflerを利用しているのは以下 https://github.com/shun91/web-speed-hackathon-2021/blob/main/client/src/components/foundation/PausableMovie/PausableMovie.jsx#L2

要件を満たす形で代替できる手段を探す

これ使えそうな気もするけど、一時停止ではなく動画の最初に戻っちゃうので、それが要件を満たすのかどうか...

この発想はすごい!アニメーションgifの再生・停止をコントロールできるJavaScriptライブラリ -Freezeframe.js | コリス https://coliss.com/articles/build-websites/operation/javascript/pauses-animated-gif-library-freezeframe.html

shun91 commented 2 years ago

現状

image

shun91 commented 2 years ago

残っているパッケージについてはissue分割したのでこちらはクローズ