[WIP] hatdhatプロジェクト + フロントエンドをpnpm + turborepoのモノレポで作る

はじめに

あとでかく

セットアップ

個人的にいつもやってるセットアップをぱーっとやります。

以下を実行

$ asdf install nodejs 19.6.0

$ asdf local nodejs 19.6.0

$ npm init
# 適当に記入

$ touch .gitignore
$ echo 'node_modules' >> .gitignore

$ npm install fixpack

package.jsonのscript属性に以下を追加

"fixpack": "fixpack"

以下を実行

$ npm run fixpack

ここまでやった時点のコミット

https://github.com/wbydo/blukkory/commit/af940d471788aa4fb5a8b5a78b4d38f4167d66e2

モノレポの設定

$ npm -g install pnpm

$ pnpm install

$ mkdir packages

$ touch pnpm-workspace.yml
# 内容はリポジトリ参照

$ git rm package-lock.json

ここまでの作業時点

https://github.com/wbydo/blukkory/commit/92d2a01c27293776728b5d92c09b33dbd16b40ee

hardhatセットアップ

$ mkdir packages/contracts

$ cd packages/contracts

$ npm init
# package.jsonを作る
# package名を「@wbydo/blukkory-contracts」にしておく

$ cd ../../

$ mv pnpm-workspace.y{,a}ml
# 拡張子名にaがないとダメでした

$ pnpm add --filter=@wbydo/blukkory-contracts hardhat fixpack

packages/contracts/package.jsonのscript属性に以下を追加

    "hardhat": "hardhat",
    "fixpack": "fixpack"

以下を実行すると、子packageにhardhat環境がインストールされる

$ pnpm --filter=@wbydo/blukkory-contracts hardhat

ので後処理

$ rm packages/contracts/package-lock.json

$ pnpm --filter=@wbydo/blukkory-contracts add -D @nomicfoundation/hardhat-toolbox @nomicfoundation/hardhat-network-helpers @nomicfoundation/hardhat-chai-matchers @nomiclabs/hardhat-ethers @nomiclabs/hardhat-etherscan chai ethers hardhat-gas-reporter solidity-coverage @typechain/hardhat typechain @typechain/ethers-v5 @ethersproject/abi @ethersproject/providers typescript ts-node @nomicfoundation/hardhat-network-helpers mocha @types/mocha

$ pnpm --filter=@wbydo/blukkory-contracts add -D @types/chai@^4.2.0 @ethersproject/bytes@^5.0.0 ethers@^5.4.7
# ethersのv6系が入ってしまってハマったので調整

$ pnpm install
# ここでロックファイルが更新される。めっちゃはやい

# tsconfig.jsonの調整もする。詳細はリポジトリ参照

以下を実行するとコンパイル→テスト

$ pnpm --filter=@wbydo/blukkory-contracts hardhat compile

$ pnpm --filter=@wbydo/blukkory-contracts hardhat test

以下の時点のコミット

https://github.com/wbydo/blukkory/commit/d707bfff0b29df84765900c58377a5a3b72a3f0b

トランスパイルの設定

$ pnpm add turbo -wD

$ touch turbo.json

キャッシングが意図した感じじゃない。今日はここまで。終了時点のコミット

https://github.com/wbydo/blukkory/commit/07fd500b3c90edf059ffdeb01532e13d84830c7f