RPGツクールMVをバージョン管理するための初期設定
   2 min read

他の方が同じ話題で次のエントリを書かれていましたが、gulp 何それ状態なので理解できませんでした。理解できる方はそちらの方が良いのかもしれません。


問題

RPG ツクール MV のリソースをバージョン管理したい。
json, js の差分が見られると嬉しいが、そのまま git diff, git diff --word-diff してもみづらい。

対策

json, js ファイルについて、RPG ツクール MV が出力したファイルをそのまま管理対象にするのではなく、commit 前に整形して管理することで差分を見やすくする。

今回、整形には prettier を用いることにした。

設定手順

RPG ツクール MV 上でプロジェクトを新規作成し、プロジェクトディレクトリに行く。
ついでに無駄に付与されている実行権限も落とす。

cd ~/Documents/Games/Project1
find . -type f -print0|xargs -0 chmod 644

git 初期化、初期コミット。

git init
git commit --allow-empty -m init
curl -L -o .gitignore https://gitignore.io/api/node,visualstudiocode
git add .gitignore
git commit -m gitignore
git add .
git commit -m "auto-generated files"

(以後、適宜 git commit )

npm プロジェクト初期化実行。

npm init -y

prettier と、オンデマンド実行用プラグインをインストール。

npm i -D prettier husky lint-staged onchange

js/plugins.js は整形すると正常動作しなかったので整形対象外に設定しておく。

echo "js/plugins.js" >> .prettierignore

npm run format コマンドで明示的に整形、また、 npm run prettier-watch コマンドでファイル変更を検知して自動整形するように設定。
(参考: CLI, Watching For Changes)

package.json:

{
  ...
  "scripts": {
    "format": "prettier --write **/*.js **/*.json",
    "prettier-watch": "onchange '**/*.js' '**/*.json' -- prettier --write {{changed}}"
  },
  ...
}

huskylint-staged を使って git-commit 時に自動整形するように設定。
(参考: Pre-commit Hook - Option 1. lint-staged)

package.json:

{
  ...
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.{js,json}": [
      "prettier --write",
      "git add"
    ]
  },
  ...
}

自動生成されたコードを整形してコミットしておく。

npm run format
git commit -am "format codes"