Сегодня мы поговорим о старте нового проекта на Foundry и подготовке рабочей среды.
P.S. Ранее, в нулевом разделе, был описан процесс установки программы на свой компьютер, поэтому дальше текст будет подразумевать, что он уже у вас имеется.
Итак, в самом начале нам нужно зайти в папку, в котором мы будем писать наш проект и выполнить команду:
forge initОна создаст несколько файлов и папок, в которых мы уже и будем дальше учиться писать тесты. Пройдемся по ним:
.github - для работы с git;
lib - тут находятся контракты для импорта(например, OpenZeppelin);
script - вспомогательные скрипты для деплоя;
src - основная папка для наших контрактов;
test - папка для тестовых контрактов;
.foundry.toml - настройка для Foundry в данном проекте;
Свой проект мы можем писать, создавая новые файлы в папке src, а тесты - в test. Я проговариваю это еще раз, так как видел проекты, в которых разработчики создавали отдельные папки все src для контрактов, а потом жаловались, что что-то не работает.
Старайтесь держать структуру файлов в корневой папке.
Если же вы получили готовый проект для написания тестов и скачали его с GitHub, то подготовить его в своей рабочей среде можно выполнив команду:
forge installОна установит необходимые зависимости и настроит пути.
Да, несколько слов о путях к файлам.
В некоторых проектах можно встретить отдельный файл remappings.txt. Именно в нем вы можете прописывать уникальные пути к файлам. Например, после установки контрактов от Open Zeppelin, они будут находиться в папке lib и иметь полный путь:
lib/openzeppelin-contracts/contracts/token/ERC20.solВы можете модифицировать его, сократив до
@openzeppelin/token/ERC20.solДля этого, в файле remappings.txt следует прописать:
@openzeppelin/ = lib/openzeppelin-contracts/contracts/И теперь "под капотом" он будет заменяться на более короткий.
Это бывает удобно, когда у вас большая файловая система в проекте.
Также, если вы видите ошибку в контракте, когда редактор подчеркивает импорты, то одним из первых действий желательно проверять эти пути в этом файле, так как у разработчиков они могут быть прописаны иначе от вашей установки.
#foundry #lesson8