【ISSUE】webpackでVSCodeの拡張機能を模倣してみた
2024年12月23日 22:38
こんにちは。ばーんです。
webpackを触り始めていた時に、
「あれ?これもしかしてVSCodeの拡張機能作れんじゃね?」
と思い自身の理解を深めるためにも作成しました。
を作成しています。それぞれ詰まったポイントとか思い出しながら書いていきます〜
※主にwebpackの入門的な内容になります
※文中のコードは動作確認していません。GitHubの方は確認しているので こちら をご利用ください
慣れれば の話ですが。
やってかないと慣れもクソもないので、今後はCRAに頼らず書いていきたいと思います(白目)
最初にReact触る時に言われた「環境構築の難しさ」ってこれなんかな…と思うぐらいにはちょこちょこ詰まりました。
2020/4に公開されてる記事通りにやったらエラーが出るぐらいの感じでした。
完全に主観ですが。単純に情報量が多いのと他のドキュメントはバージョン移行の時に
「これ変えたからこうやって書き換えてね!」みたいなのわかりやすく配置されてた感があるのですが、
全体を通して少し探しにくいな〜と感じました(僕が未熟だけだった説はあります)
module.exports = {}
の{}内に設定を記述していく公式にも書かれてますが、下記の6つのポイントさえ抑えればあとはそこからの発展なのかなと感じてます。
エントリーポイントを示す。
出力先を指定する。
webpack はデフォルトでは js と json しか把握できない。
loader を使うとその他の拡張子もバンドルできる。
babel loader/eslint-loader は js を js にしてる。やや例外
この場合は、
.txt拡張子のファイルにlaw-loaderを適用して〜
と指示している。
そのままの意味。追加の拡張機能。
plugins のプロパティに追加して new する必要がある。
本番か開発かを分ける。
mode: "production"
mode: "development"
どちらかの記述だけでだいたいいい感じにしてくれる
ブラウザの互換性について。
ES5まではカバーしてます。
IE8以下は無理。
デフォルトではwebpack.config.js
を起動します。
ファイル名を変えたければ webpack --config webpack.hoge.js
と --configの記述が必要。
これはダメ
これが name の想定通りの挙動
entryに文字列が入ってたりするとmain.jsが出力されちゃいます。
5 系では dev server 立ち上がらず
https://teratail.com/questions/300230
https://zenn.dev/sakito/articles/7002f4d1097a85cb2b31
2020/10にバージョン5出てたから慣れる意味でも5使おう!
と思ったのですが、まだ懸念点がある模様。
世に出てる記事は4系がメインなので「とりあえず触る」程度であれば無理せず4がいいかも。
(イキって5でいくんじゃい!と思ったら無事憤死しました)
npm i webpack-dev-server
でインストールが必要です。
またcliのコマンドでwebpack-dev-server
が必要です。
設定ファイルの内容は、最低限下記内容があれば動きます。
この設定だとページ全体で更新がかかってしまうので、hot: true
にしてcliにも--hot
を追加するとhot reloadにできます。
注意点としてはdevServer起動中はファイル出力がされているわけではないので、確認後は出力忘れずに実行が必要です。
あともう1つ注意点が。最初は下記ファイルを共通に書いてマージしてたのですが、上手く動きませんでした。
sass(scss)のコンパイルについてですね。
npm installは各種ローダーとnode-sass本体が必要です。
https://qiita.com/t-motoki/items/4eab2fcd46198c2377b3
設定ファイルはこんな感じ↓
ちなみに、下記ファイルも追加しておくと本番と開発でいい感じに出力してくれます。
上記2つは「最初すごく便利で使ってたな〜壊れやすかった(すぐ止まる)し作ったろ!」
のテンションで作ったのですが、そーいえば画像圧縮もちまちまやってたな…
と思い出しまして、webpack使ったら一気に圧縮できるんちゃう?
と思って作りました。
ここでちまちまドラッグして作ってましたが、今見るとDev APIってあるしFreeで500って書いてるから、普通にこれ利用した方がいいですね。
(実行結果もTinyjpgの方が軽かった)
ただせっかく作ったので設定ファイル載せときます↓
最後まで読んでいただきまことにありがとうございました!
あくまで今回は最小限の設定なのでここから追加、修正していくのが基本かなと思います。
などなど。たくさんのことができるのでここを起点に広げていきたいと思います。
今回書いたコードは こちら で公開してますので、ご自由にお使いください〜
それでは!
公式サイト
https://webpack.js.org/
Udemyの元記事 分かりやすすぎました
https://qiita.com/soarflat/items/28bf799f7e0335b68186
hot reload の参考記事
https://blog.websandbag.com/entry/2018/01/24/230000
全体的に参考にした
https://qiita.com/riversun/items/d27f6d3ab7aaa119deab
easy-sass の参考サイト
https://qiita.com/t-motoki/items/4eab2fcd46198c2377b3
[cv:issue_marketplace_engineer]
診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。