Giter VIP home page Giter VIP logo

webpack-starter's Introduction

Webpackボイラープレート

What is it

WebpackでEjs、Scss、TypeScriptのバンドルを行う開発環境

requirement

Node.js

M1 Macに対応しているLTS版の 16.13.0 を使います。 必要に応じてNode.jsのバージョン管理ツールを使ってください。

https://qiita.com/alice37th/items/989af6749264de50bb85

webp

後述するWebP変換バッチを仕様する際には、Googleが配布しているユーティリティ の導入が必要です。 MacであればHomebrewから導入出来ます。

brew install webp

プロジェクト設定

project.config.js に切り出してあります。多分あまり触ることはないです。

変更が有り得そうな箇所を下記に抜粋します。

項目 内容 挙動
images.bundleImages 画像をjs内にbase64でバンドルするかどうか① trueで閾値(②)以下の画像をバンドルする
images.bundleSizeLimit 何バイトまでの画像をバンドルするか② ①がtrueのときのみ有効 単位はbyte数(5*1024なら5kb)
images.assetName 書き出すファイル名のフォーマット 命名規則を指定する
html.minify productionビルド時の圧縮設定 trueで圧縮する(デフォルトでfalse
html.variables ejsに渡す変数定義 変数編集後は要再起動

envファイル

  • 環境ごとに異なる値、またはセキュアなトークン等を使う場合は環境に応じた.envファイルを作成してください
  • .env.example以外はgitignoreされます
  • 読み込み対象となるenvはコマンド一覧を参照ください
  • 特定の環境のみ(かつその環境が全体から見て少数一部に限る)が違う、という場合は定数で切り分けするほうが低コストかもしれません
  • .env.exampleはプロジェクト状況に応じて追記してください
    • その際、セキュアな情報はgitを介して共有すべきではありません

npmコマンド

コマンド 用途 備考
dev 開発環境の起動 .env.localを参照する
build:develop development環境ビルド cleanしてから実行される .env.developを参照する
build:production production環境ビルド cleanしてから実行される .env.productionを参照する
clean distを消去する
check-types tsファイルの型をチェックする
eslint lint実行 エラーチェックのみ
eslint:fix lint実行 自動修正もする
format prettier実行 コードの整形をする
lint ファイルのLint処理 eslint check-types
lint:fix ファイルのLint処理 eslint:fix check-types format
convert:webp WebP一括変換 src/images配下の画像を一括変換する
beautify:html HTML整形 dist配下のhtmlのみ処理される

WebP一括変換

src/images配下のjpgjpeg, pngを一括でWebPに変換します。 変換したファイルは${拡張子を含む元のファイル名}.webpとしてソースファイルと同一階層に出力されます。(拡張子違いで同一ファイル名があるとバッティングするため)

HTML整形

  • ejsのモジュール・コンポーネントを利用した構築では、インデントを意図通りに揃えるのが非常に困難です。
  • そのため、ビルド後のhtmlに対して整形をかけることで本番環境・納品時に整形し直したデータを作成出来るようにします。
    • あくまでビルドした静的なhtmlファイルのみ対象にするため、devサーバ経由での閲覧時点ではインデントなどは元の状態のままです。
  • 整形ルールはeditorconfigに準じます。

備考・メモ

EJS

devコマンドではwebpack-devサーバを起動した時点で読み込んだejsファイルを認識し、待ち受けします。 言い換えると、devコマンドからの起動後に作成・配置したEJSファイルについては、再実行して開発サーバを起動し直すまで存在を認識されません。 また、アンダースコアで始まるinclude partial用EJSファイルも同様です。

ちょっとどうにかしたいなとは思ってますが、現状は空でもEJSファイルを作成してから起動するか、都度devコマンドの再実行で対処してもらえればと思います。

loader関連

scssファイル、エントリーポイントに登録されているtsファイルはejsコンパイル時に自動で挿入されるので、自分で指定する必要はありません。

IE11対策

一応tsのコンパイルターゲットはES5になってますが、関数のpolyfill等は自動で適応がされません。必要なら下記で必要なpolyfillのバンドルを生成するのがおすすめです。

https://polyfill.io/v3/url-builder/

tsファイルに以下を書けば一括でpolyfillが適当されますが、バンドルサイズが激増するのであまりオススメはしません。

import 'core-js';

どこまで対応するかは検討します。

リリースノート

マイナーリリースあたりまでの主要更新項目を記載します。 詳細はGithubのリリース情報を参照してください。

version date description
1.3.0 2022/01/06 汎用スクリプトの追加など
1.2.0 2021/12/20 静的ファイルの配置対応、SCSSの近代フォーマット化、VSCode向け推奨エクステンションの登録
1.1.0 2021/12/17 Webpack.config改修、Webp対応
1.0.0 2021/11/29 初版

webpack-starter's People

Contributors

alicerose avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.