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

By [wbydo](https://paragraph.com/@wbydo) · 2023-02-05

---

はじめに
----

あとでかく

セットアップ
------

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

以下を実行

    $ 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](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](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](https://github.com/wbydo/blukkory/commit/d707bfff0b29df84765900c58377a5a3b72a3f0b)

トランスパイルの設定
----------

    $ pnpm add turbo -wD
    
    $ touch turbo.json
    

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

[https://github.com/wbydo/blukkory/commit/07fd500b3c90edf059ffdeb01532e13d84830c7f](https://github.com/wbydo/blukkory/commit/07fd500b3c90edf059ffdeb01532e13d84830c7f)

---

*Originally published on [wbydo](https://paragraph.com/@wbydo/wip-hatdhat-pnpm-turborepo)*
