1<!DOCTYPE html> 2<html lang="en" class="h-full"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width,initial-scale=1"> 6 <meta name="turbo-cache-control" content="no-cache" data-turbo-track="reload" data-track-token="3.6.0.792839529395"> 7 8 <!-- See retype.com --> 9 <meta name="generator" content="Retype 3.6.0"> 10 11 <!-- Primary Meta Tags --> 12 <title>Getting started | Gemforge</title> 13 <meta name="title" content="Getting started | Gemforge"> 14 <meta name="description" content="Gemforge is written in Node.js and works on all the platforms that Node runs on."> 15 16 <!-- Canonical --> 17 <link rel="canonical" href="https://gemforge.xyz/getting-started/"> 18 19 <!-- Open Graph / Facebook --> 20 <meta property="og:type" content="website"> 21 <meta property="og:url" content="https://gemforge.xyz/getting-started/"> 22 <meta property="og:title" content="Getting started | Gemforge"> 23 <meta property="og:description" content="Gemforge is written in Node.js and works on all the platforms that Node runs on."> 24 25 <!-- Twitter --> 26 <meta property="twitter:card" content="summary_large_image"> 27 <meta property="twitter:url" content="https://gemforge.xyz/getting-started/"> 28 <meta property="twitter:title" content="Getting started | Gemforge"> 29 <meta property="twitter:description" content="Gemforge is written in Node.js and works on all the platforms that Node runs on."> 30 31
31<script data-cfasync="false">(function () { var el = document.documentElement, m = localStorage.getItem("doc_theme"), wm = window.matchMedia; if (m === "dark" || (!m && wm && wm("(prefers-color-scheme: dark)").matches)) { el.classList.add("dark") } else { el.classList.remove("dark") } })();</script>
31 32 33 <link href="../static/favicon.png" rel="icon"> 34 <link href="../resources/css/retype.css?v=3.6.0.792839529395" rel="stylesheet"> 35 36
36<script data-cfasync="false" src="../resources/js/config.js?v=3.6.0.792839529395" data-turbo-eval="false" defer></script>
36 37
37<script data-cfasync="false" src="../resources/js/retype.js?v=3.6.0" data-turbo-eval="false" defer></script>
37 38
38<script id="lunr-js" data-cfasync="false" src="../resources/js/lunr.js?v=3.6.0.792839529395" data-turbo-eval="false" defer></script>
38 39
39<script id="prism-js" data-cfasync="false" src="../resources/js/prism.js?v=3.6.0.792839529395" defer></script>
39 40</head> 41<body> 42 <div id="docs-app" class="relative text-base antialiased text-gray-700 bg-white font-body dark:bg-dark-850 dark:text-dark-300"> 43 <div class="absolute bottom-0 left-0 bg-gray-100 dark:bg-dark-800" style="top: 5rem; right: 50%"></div> 44 45 <header id="docs-site-header" class="sticky top-0 z-30 flex w-full h-16 bg-white border-b border-gray-200 md:h-20 dark:bg-dark-850 dark:border-dark-650"> 46 <div class="container relative flex items-center justify-between pr-6 grow md:justify-start"> 47 <!-- Mobile menu button skeleton --> 48 <button v-cloak class="skeleton docs-mobile-menu-button flex items-center justify-center shrink-0 overflow-hidden dark:text-white focus:outline-none rounded-full w-10 h-10 ml-3.5 md:hidden"><svg xmlns="http://www.w3.org/2000/svg" class="mb-px shrink-0" width="24" height="24" viewBox="0 0 24 24" role="presentation" style="margin-bottom: 0px;"><g fill="currentColor"><path d="M2 4h20v2H2zM2 11h20v2H2zM2 18h20v2H2z"></path></g></svg></button> 49 <div v-cloak id="docs-sidebar-toggle"></div> 50 51 <!-- Logo --> 52 <div class="flex items-center justify-between h-full py-2 md:w-75"> 53 <div class="flex items-center px-2 md:px-6"> 54 <a id="docs-site-logo" href="../" class="flex items-center leading-snug text-2xl"> 55 <span class="w-10 mr-2 grow-0 shrink-0 overflow-hidden"> 56 <img class="max-h-10 dark:hidden md:inline-block" src="../static/logo.png"> 57 <img class="max-h-10 hidden dark:inline-block" src="../static/logo.png"> 58 </span> 59 <span class="dark:text-white font-semibold line-clamp-1 md:line-clamp-2">Gemforge</span> 60 </a> 61 </div> 62 63 <span class="hidden h-8 border-r md:inline-block dark:border-dark-650"></span> 64 </div> 65 66 <div class="flex justify-between md:grow"> 67 <!-- Top Nav --> 68 <nav class="hidden md:flex"> 69 <ul class="flex flex-col mb-4 md:pl-16 md:mb-0 md:flex-row md:items-center"> 70 <li class="mr-6"> 71 <a class="py-2 md:mb-0 inline-flex items-center text-sm whitespace-nowrap transition-colors duration-200 ease-linear md:text-blue-500 dark:text-blue-400 hover:text-blue-800 dark:hover:text-blue-200" href="https://github.com/gemstation/gemforge">Github</a> 72 </li> 73 <li class="mr-6"> 74 <a class="py-2 md:mb-0 inline-flex items-center text-sm whitespace-nowrap transition-colors duration-200 ease-linear md:text-blue-500 dark:text-blue-400 hover:text-blue-800 dark:hover:text-blue-200" href="https://npmjs.com/package/gemforge">NPM</a> 75 </li> 76 <li class="mr-6"> 77 <a class="py-2 md:mb-0 inline-flex items-center text-sm whitespace-nowrap transition-colors duration-200 ease-linear md:text-blue-500 dark:text-blue-400 hover:text-blue-800 dark:hover:text-blue-200" href="https://twitter.com/hiddentao">Twitter</a> 78 </li> 79 80 </ul> 81 </nav> 82 83 <!-- Header Right Skeleton --> 84 <div v-cloak class="flex justify-end grow skeleton"> 85 86 <!-- Search input mock --> 87 <div class="relative hidden w-40 lg:block lg:max-w-sm lg:ml-auto"> 88 <div class="absolute flex items-center justify-center h-full pl-3 dark:text-dark-300"> 89 <svg xmlns="http://www.w3.org/2000/svg" class="icon-base" width="16" height="16" viewBox="0 0 24 24" aria-labelledby="icon" role="presentation" style="margin-bottom: 1px;"><g fill="currentColor" ><path d="M21.71 20.29l-3.68-3.68A8.963 8.963 0 0020 11c0-4.96-4.04-9-9-9s-9 4.04-9 9 4.04 9 9 9c2.12 0 4.07-.74 5.61-1.97l3.68 3.68c.2.19.45.29.71.29s.51-.1.71-.29c.39-.39.39-1.03 0-1.42zM4 11c0-3.86 3.14-7 7-7s7 3.14 7 7c0 1.92-.78 3.66-2.04 4.93-.01.01-.02.01-.02.01-.01.01-.01.01-.01.02A6.98 6.98 0 0111 18c-3.86 0-7-3.14-7-7z" ></path></g></svg> 90 </div> 91 <input class="w-full h-10 placeholder-gray-400 transition-colors duration-200 ease-in bg-gray-200 border border-transparent roun
91ded md:text-sm hover:bg-white hover:border-gray-300 focus:outline-none focus:bg-white focus:border-gray-500 dark:bg-dark-600 dark:border-dark-600 dark:placeholder-dark-400" style="padding: 0.625rem 0.75rem 0.625rem 2rem" type="text" placeholder="Search"> 92 </div> 93 94 <!-- Mobile search button --> 95 <div class="flex items-center justify-center w-10 h-10 lg:hidden"> 96 <svg xmlns="http://www.w3.org/2000/svg" class="shrink-0 icon-base" width="20" height="20" viewBox="0 0 24 24" aria-labelledby="icon" role="presentation" style="margin-bottom: 0px;"><g fill="currentColor" ><path d="M21.71 20.29l-3.68-3.68A8.963 8.963 0 0020 11c0-4.96-4.04-9-9-9s-9 4.04-9 9 4.04 9 9 9c2.12 0 4.07-.74 5.61-1.97l3.68 3.68c.2.19.45.29.71.29s.51-.1.71-.29c.39-.39.39-1.03 0-1.42zM4 11c0-3.86 3.14-7 7-7s7 3.14 7 7c0 1.92-.78 3.66-2.04 4.93-.01.01-.02.01-.02.01-.01.01-.01.01-.01.02A6.98 6.98 0 0111 18c-3.86 0-7-3.14-7-7z" ></path></g></svg> 97 </div> 98 99 <!-- Dark mode switch placeholder --> 100 <div class="w-10 h-10 lg:ml-2"></div> 101 102 <!-- History button --> 103 <div class="flex items-center justify-center w-10 h-10" style="margin-right: -0.625rem;"> 104 <svg xmlns="http://www.w3.org/2000/svg" class="shrink-0 icon-base" width="22" height="22" viewBox="0 0 24 24" aria-labelledby="icon" role="presentation" style="margin-bottom: 0px;"><g fill="currentColor" ><g ><path d="M12.01 6.01c-.55 0-1 .45-1 1V12a1 1 0 00.4.8l3 2.22a.985.985 0 001.39-.2.996.996 0 00-.21-1.4l-2.6-1.92V7.01c.02-.55-.43-1-.98-1z"></path><path d="M12.01 1.91c-5.33 0-9.69 4.16-10.05 9.4l-.29-.26a.997.997 0 10-1.34 1.48l1.97 1.79c.19.17.43.26.67.26s.48-.09.67-.26l1.97-1.79a.997.997 0 10-1.34-1.48l-.31.28c.34-4.14 3.82-7.41 8.05-7.41 4.46 0 8.08 3.63 8.08 8.09s-3.63 8.08-8.08 8.08c-2.18 0-4.22-.85-5.75-2.4a.996.996 0 10-1.42 1.4 10.02 10.02 0 007.17 2.99c5.56 0 10.08-4.52 10.08-10.08.01-5.56-4.52-10.09-10.08-10.09z"></path></g></g></svg> 105 </div> 106 </div> 107 108 <div v-cloak class="flex justify-end grow"> 109 <div id="docs-mobile-search-button"></div> 110 <doc-search-desktop></doc-search-desktop> 111 112 <doc-theme-switch class="lg:ml-2"></doc-theme-switch> 113 <doc-history></doc-history> 114 </div> 115 </div> 116 </div> 117 </header> 118 119 <div class="container relative flex bg-white"> 120 <!-- Sidebar Skeleton --> 121 <div v-cloak class="fixed flex flex-col shrink-0 duration-300 ease-in-out bg-gray-100 border-gray-200 sidebar top-20 w-75 border-r h-screen md:sticky transition-transform skeleton dark:bg-dark-800 dark:border-dark-650"> 122 123 <!-- Render this div, if config.showSidebarFilter is `true` --> 124 <div class="flex items-center h-16 px-6"> 125 <input class="w-full h-8 px-3 py-2 transition-colors duration-200 ease-linear bg-white border border-gray-200 rounded shadow-none text-sm focus:outline-none focus:border-gray-600 dark:bg-dark-600 dark:border-dark-600" type="text" placeholder="Filter"> 126 </div> 127 128 <div class="pl-6 mt-1 mb-4"> 129 <div class="w-32 h-3 mb-4 bg-gray-200 rounded-full loading dark:bg-dark-600"></div> 130 <div class="w-48 h-3 mb-4 bg-gray-200 rounded-full loading dark:bg-dark-600"></div> 131 <div class="w-40 h-3 mb-4 bg-gray-200 rounded-full loading dark:bg-dark-600"></div> 132 <div class="w-32 h-3 mb-4 bg-gray-200 rounded-full loading dark:bg-dark-600"></div> 133 <div class="w-48 h-3 mb-4 bg-gray-200 rounded-full loading dark:bg-dark-600"></div> 134 <div class="w-40 h-3 mb-4 bg-gray-200 rounded-full loading dark:bg-dark-600"></div> 135 </div> 136 137 <div class="shrink-0 mt-auto bg-transparent dark:border-dark-650"> 138 <a class="flex items-center justify-center flex-nowrap h-16 text-gray-400 dark:text-dark-400 hover:text-gray-700 dark:hover:text-dark-300 transition-colors duration-150 ease-in docs-powered-by" target="_blank" href="https://retype.com/" rel="noopener">
139 <span class="text-xs whitespace-nowrap">Powered by</span> 140 <svg xmlns="http://www.w3.org/2000/svg" class="ml-2" fill="currentColor" width="96" height="20" overflow="visible"><path d="M0 0v20h13.59V0H0zm11.15 17.54H2.44V2.46h8.71v15.08zM15.8 20h2.44V4.67L15.8 2.22zM20.45 6.89V20h2.44V9.34z"/><g><path d="M40.16 8.44c0 1.49-.59 2.45-1.75 2.88l2.34 3.32h-2.53l-2.04-2.96h-1.43v2.96h-2.06V5.36h3.5c1.43 0 2.46.24 3.07.73s.9 1.27.9 2.35zm-2.48 1.1c.26-.23.38-.59.38-1.09 0-.5-.13-.84-.4-1.03s-.73-.28-1.39-.28h-1.54v2.75h1.5c.72 0 1.2-.12 1.45-.35zM51.56 5.36V7.2h-4.59v1.91h4.13v1.76h-4.13v1.92h4.74v1.83h-6.79V5.36h6.64zM60.09 7.15v7.48h-2.06V7.15h-2.61V5.36h7.28v1.79h-2.61zM70.81 14.64h-2.06v-3.66l-3.19-5.61h2.23l1.99 3.45 1.99-3.45H74l-3.19 5.61v3.66zM83.99 6.19c.65.55.97 1.4.97 2.55s-.33 1.98-1 2.51-1.68.8-3.04.8h-1.23v2.59h-2.06V5.36h3.26c1.42 0 2.45.28 3.1.83zm-1.51 3.65c.25-.28.37-.69.37-1.22s-.16-.92-.48-1.14c-.32-.23-.82-.34-1.5-.34H79.7v3.12h1.38c.68 0 1.15-.14 1.4-.42zM95.85 5.36V7.2h-4.59v1.91h4.13v1.76h-4.13v1.92H96v1.83h-6.79V5.36h6.64z"/></g></svg> 141 </a> 142 </div> 143 </div> 144 145 <!-- Sidebar component --> 146 <doc-sidebar v-cloak> 147 <template #sidebar-footer> 148 <div class="shrink-0 mt-auto border-t md:bg-transparent md:border-none dark:border-dark-650"> 149 150 <div class="py-3 px-6 md:hidden border-b dark:border-dark-650"> 151 <nav> 152 <ul class="flex flex-wrap justify-center items-center"> 153 <li class="mr-6"> 154 <a class="block py-1 inline-flex items-center text-sm whitespace-nowrap transition-colors duration-200 ease-linear md:text-blue-500 dark:text-blue-400 hover:text-blue-800 dark:hover:text-blue-200" href="https://github.com/gemstation/gemforge">Github</a> 155 </li> 156 <li class="mr-6"> 157 <a class="block py-1 inline-flex items-center text-sm whitespace-nowrap transition-colors duration-200 ease-linear md:text-blue-500 dark:text-blue-400 hover:text-blue-800 dark:hover:text-blue-200" href="https://npmjs.com/package/gemforge">NPM</a> 158 </li> 159 <li class="mr-6"> 160 <a class="block py-1 inline-flex items-center text-sm whitespace-nowrap transition-colors duration-200 ease-linear md:text-blue-500 dark:text-blue-400 hover:text-blue-800 dark:hover:text-blue-200" href="https://twitter.com/hiddentao">Twitter</a> 161 </li> 162 163 </ul> 164 </nav> 165 </div> 166 167 <a class="flex items-center justify-center flex-nowrap h-16 text-gray-400 dark:text-dark-400 hover:text-gray-700 dark:hover:text-dark-300 transition-colors duration-150 ease-in docs-powered-by" target="_blank" href="https://retype.com/" rel="noopener"> 168 <span class="text-xs whitespace-nowrap">Powered by</span> 169 <svg xmlns="http://www.w3.org/2000/svg" class="ml-2" fill="currentColor" width="96" height="20" overflow="visible"><path d="M0 0v20h13.59V0H0zm11.15 17.54H2.44V2.46h8.71v15.08zM15.8 20h2.44V4.67L15.8 2.22zM20.45 6.89V20h2.44V9.34z"/><g><path d="M40.16 8.44c0 1.49-.59 2.45-1.75 2.88l2.34 3.32h-2.53l-2.04-2.96h-1.43v2.96h-2.06V5.36h3.5c1.43 0 2.46.24 3.07.73s.9 1.27.9 2.35zm-2.48 1.1c.26-.23.38-.59.38-1.09 0-.5-.13-.84-.4-1.03s-.73-.28-1.39-.28h-1.54v2.75h1.5c.72 0 1.2-.12 1.45-.35zM51.56 5.36V7.2h-4.59v1.91h4.13v1.76h-4.13v1.92h4.74v1.83h-6.79V5.36h6.64zM60.09 7.15v7.48h-2.06V7.15h-2.61V5.36h7.28v1.79h-2.61zM70.81 14.64h-2.06v-3.66l-3.19-5.61h2.23l1.99 3.45 1.99-3.45H74l-3.19 5.61v3.66zM83.99 6.19c.65.55.97 1.4.97 2.55s-.33 1.98-1 2.51-1.68.8-3.04.8h-1.23v2.59h-2.06V5.36h3.26c1.42 0 2.45.28 3.1.83zm-1.51 3.65c.25-.28.37-.69.37-1.22s-.16-.92-.48-1.14c-.32-.23-.82-.34-1.5-.34H79.7v3.12h1.38c.68 0 1.15-.14 1.4-.42zM95.85 5.36V7.2h-4.59v1.91h4.13v1.76h-4.13v1.92H96v1.83h-6.79V5.36h6.64z"/></g></svg> 170 </a> 171 </div> 172 </template> 173 </doc-sidebar> 174 175 <div class="grow min-w-0 dark:bg-dark-850"> 176 <!-- Render "toolbar" template here on api pages --><!-- Render page content --> 177 <div class="flex"> 178 <div class="min-w-0 p-4 grow md:px-16"> 179 <main class="relative pb-12 lg:pt-2"> 180 <div class="docs-markdown" id="docs-content"> 181 <!-- Rendered if sidebar right is enabled --> 182 <div id="docs-sidebar-right-toggle"></div> 183 <!-- Page content --> 184<doc-anchor-target id="getting-started" class="break-words"> 185 <h1> 186 <doc-anchor-trigger class="header-anchor-trigger" to="#getting-started">#</doc-anchor-trigger>
187 <span>Getting started</span> 188 </h1> 189</doc-anchor-target> 190<doc-anchor-target id="step-1---installation"> 191 <h2> 192 <doc-anchor-trigger class="header-anchor-trigger" to="#step-1---installation">#</doc-anchor-trigger> 193 <span>Step 1 - Installation</span> 194 </h2> 195</doc-anchor-target> 196<p>Gemforge is written in <a href="http://nodejs.org">Node.js</a> and works on all the platforms that Node runs on.</p> 197<div class="flex mb-6"> 198 <div class="shrink-0 w-1 rounded-tl rounded-bl bg-blue-500 dark:bg-blue-400"></div> 199 <div class="flex w-full py-4 border border-l-0 border-gray-300 rounded-tr rounded-br doc-alert bg-white dark:bg-dark-700 dark:border-dark-700" role="alert"> 200 <div class="flex items-center ml-4 h-7"> 201 <svg xmlns="http://www.w3.org/2000/svg" class="mb-px text-blue-500 dark:text-blue-400" width="22" height="22" viewBox="0 0 24 24" role="presentation"> 202 <g fill="currentColor"><g> 203 <path d="M12 1C5.93 1 1 5.93 1 12s4.93 11 11 11 11-4.93 11-11S18.07 1 12 1zm0 20c-4.96 0-9-4.04-9-9s4.04-9 9-9 9 4.04 9 9-4.04 9-9 9z"></path> 204 <path d="M12 11c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1s1-.45 1-1v-4c0-.55-.45-1-1-1zM12.01 7c-.56 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1z"></path> 205 <path fill="none" d="M0 0h24v24H0z"></path> 206 </g></g> 207 </svg> 208 </div> 209 <div class="pr-5 ml-3 w-full"> 210<p><strong>Node v16 or above is required.</strong> We recommend using <a href="https://github.com/nvm-sh/nvm">nvm</a> to manage different Node versions on your machine.</p> 211 </div> 212 </div> 213</div> 214<p>It's best to install Gemforge globally in your Node environment, depending on which package manager you use:</p> 215<doc-tabs> 216<doc-tab v-cloak id="pnpm"> 217<template #title>pnpm</template> 218<div class="codeblock-wrapper"><doc-codeblock> 219<pre class="language-bash"><code v-pre class="language-bash">pnpm add --global gemforge</code></pre> 220</doc-codeblock></div> 221</doc-tab> 222<doc-tab v-cloak id="npm"> 223<template #title>npm</template> 224<div class="codeblock-wrapper"><doc-codeblock> 225<pre class="language-bash"><code v-pre class="language-bash">npm install --global gemforge</code></pre> 226</doc-codeblock></div> 227</doc-tab> 228<doc-tab v-cloak id="yarn"> 229<template #title>yarn</template> 230<div class="codeblock-wrapper"><doc-codeblock> 231<pre class="language-bash"><code v-pre class="language-bash">yarn add --global gemforge</code></pre> 232</doc-codeblock></div> 233</doc-tab> 234</doc-tabs> 235<p>At this point you should be able to run the <code v-pre>gemforge</code> command:</p> 236<div class="codeblock-wrapper"><doc-codeblock> 237<pre class="language-bash"><code v-pre class="language-bash">> gemforge --help 238Usage: gemforge [options] [command] 239 240Options: 241 -V, --version output the version number 242 -h, --help display help for command 243 244Commands: 245 init [options] Initialize a gemforge config file for an existing project. 246 scaffold [options] Generate diamond smart contract project scaffolding. 247 build [options] Build a project. 248 deploy [options] [network] Deploy the diamond to a network. 249 help [command] display help for command</code></pre> 250</doc-codeblock></div> 251<doc-anchor-target id="step-2---project-setup"> 252 <h2> 253 <doc-anchor-trigger class="header-anchor-trigger" to="#step-2---project-setup">#</doc-anchor-trigger> 254 <span>Step 2 - Project setup</span> 255 </h2> 256</doc-anchor-target> 257<p>Gemforge provides <a href="../frameworks/">example projects</a> to get you started.</p> 258<p>These can be cloned and setup in an empty folder using the <a href="../commands/scaffold/">scaffold</a> command:</p> 259<doc-tabs> 260<doc-tab v-cloak id="foundry"> 261<template #title>Foundry</template> 262<div class="codeblock-wrapper"><doc-codeblock> 263<pre class="language-bash"><code v-pre class="language-bash">gemforge scaffold --folder /path/to/new_or_empty_folder</code></pre> 264</doc-codeblock></div> 265</doc-tab> 266<doc-tab v-cloak id="hardhat"> 267<template #title>
267Hardhat</template> 268<div class="codeblock-wrapper"><doc-codeblock> 269<pre class="language-bash"><code v-pre class="language-bash">gemforge scaffold --hardhat --folder /path/to/new_or_empty_folder</code></pre> 270</doc-codeblock></div> 271</doc-tab> 272</doc-tabs> 273<doc-panel id="use-with-an-existing-project" collapsed> 274 <template #title>Use with an existing project</template> 275<p>If you have an existing Diamond Standard project then you can use the <a href="../commands/init/">init</a> command to create a Gemforge <a href="../configuration/">configuration file</a>.</p> 276<doc-tabs> 277<doc-tab v-cloak id="foundry"> 278<template #title>Foundry</template> 279<div class="codeblock-wrapper"><doc-codeblock> 280<pre class="language-bash"><code v-pre class="language-bash">gemforge init</code></pre> 281</doc-codeblock></div> 282</doc-tab> 283<doc-tab v-cloak id="hardhat"> 284<template #title>Hardhat</template> 285<div class="codeblock-wrapper"><doc-codeblock> 286<pre class="language-bash"><code v-pre class="language-bash">gemforge init --hardhat</code></pre> 287</doc-codeblock></div> 288</doc-tab> 289</doc-tabs> 290<p>The <code v-pre>gemforge.config.cjs</code> file will have been created in the current folder. You will probably need to edit this file to <a href="../configuration/">customize it</a> for your project.</p> 291<div class="flex mb-6"> 292 <div class="shrink-0 w-1 rounded-tl rounded-bl bg-blue-500 dark:bg-blue-400"></div> 293 <div class="flex w-full py-4 border border-l-0 border-gray-300 rounded-tr rounded-br doc-alert bg-white dark:bg-dark-700 dark:border-dark-700" role="alert"> 294 <div class="flex items-center ml-4 h-7"> 295 <svg xmlns="http://www.w3.org/2000/svg" class="mb-px text-blue-500 dark:text-blue-400" width="22" height="22" viewBox="0 0 24 24" role="presentation"> 296 <g fill="currentColor"><g> 297 <path d="M12 1C5.93 1 1 5.93 1 12s4.93 11 11 11 11-4.93 11-11S18.07 1 12 1zm0 20c-4.96 0-9-4.04-9-9s4.04-9 9-9 9 4.04 9 9-4.04 9-9 9z"></path> 298 <path d="M12 11c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1s1-.45 1-1v-4c0-.55-.45-1-1-1zM12.01 7c-.56 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1z"></path> 299 <path fill="none" d="M0 0h24v24H0z"></path> 300 </g></g> 301 </svg> 302 </div> 303 <div class="pr-5 ml-3 w-full"> 304<p>Note: Gemforge assumes that your project uses the <a href="https://github.com/mudgen/diamond-2-hardhat">diamond-2-hardhat</a> reference repository for the core Diamond Standard libraries. It also assumes that the <a href="../configuration/diamond/">core facets</a> are part of your diamond.</p> 305 </div> 306 </div> 307</div> 308</doc-panel> 309<doc-anchor-target id="step-3---build-contracts"> 310 <h2> 311 <doc-anchor-trigger class="header-anchor-trigger" to="#step-3---build-contracts">#</doc-anchor-trigger> 312 <span>Step 3 - Build contracts</span> 313 </h2> 314</doc-anchor-target> 315<p>To generate all necessary Diamond code and compile your project inside the project folder:</p> 316<div class="codeblock-wrapper"><doc-codeblock> 317<pre class="language-bash"><code v-pre class="language-bash">gemforge build</code></pre> 318</doc-codeblock></div> 319<doc-anchor-target id="step-4---deploy-contracts"> 320 <h2> 321 <doc-anchor-trigger class="header-anchor-trigger" to="#step-4---deploy-contracts">#</doc-anchor-trigger> 322 <span>Step 4 - Deploy contracts</span> 323 </h2> 324</doc-anchor-target> 325<p>Assuming a local test node is running at http://localhost:8545, use the following to deploy your Diamond code and facets to it:</p> 326<div class="codeblock-wrapper"><doc-codeblock> 327<pre class="language-bash"><code v-pre class="language-bash">gemforge deploy local</code></pre> 328</doc-codeblock></div> 329<p>At this point you've just built and deployed a Diamond Standard project to your local test node using Gemforge!</p> 330<doc-anchor-target id="step-5---next-steps"> 331 <h2> 332 <doc-anchor-trigger class="header-anchor-trigger" to="#step-5---next-steps">#</doc-anchor-trigger> 333 <span>Step 5 - Next steps</span> 334 </h2> 335</doc-anchor-target> 336<ul> 337<li><a href="../development/facets/">Add facets and methods</a></li> 338<li><a href="../development/storage/">Update the storage structure</a></li> 339<li><a href="../development/initialization/">Customize initialization</a></li> 340</ul> 341 342 343 <!-- Required only on API pages --> 344 <doc-toolbar-member-filter-no-results></doc-toolbar-member-filter-no-results> 345 </div> 346 <footer class="clear-both"> 347 <div class="flex flex-wrap items-center justify-between mt-14"> 348 <a class="my-2.5 inline-flex items-center text-sm whitespace-nowrap text-blue-500 dark:text-blue-400 hover:text-blue-700 hover:underline" href="https://github.com/gemstation/gemforge-docs/blob/master/getting-started.md" target="_blank" rel="noopener"> 349 <svg class="mr-1.5" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="currentColor" overflow="visible"><path d="M20 12c-.55 0-1 .45-1 1v7c0 .55-.45 1-1 1H4c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h7c.55 0 1-.45 1-1s-.45-1-1-1H4C2.35 3 1 4.35 1 6v14c0 1.65 1.35 3 3 3h14c1.65 0 3-1.35 3-3v-7c0-.55-.45-1-1-1z" /><path d="M22.21 1.79c-1.18-1.18-3.24-1.18-4.41 0l-9.5 9.5c-.13.13-.22.29-.26.46l-1 4c-.08.34.01.7.26.95.18.2.44.3.7.3.08 0 .16-.01.24-.03l4-1c.18-.04.34-.13.46-.26l9.5-9.5c1.22-1.22 1.22-3.2.01-4.42zm-1.42 3l-9.3 9.3-2.11.53.53-2.11 9.3-9.3c.42-.42 1.16-.42 1.59 0 .43.43.43 1.15-.01 1.58z" /><path fill="none" d="M0 0h24v24H0z" /></svg>
350 <span>Edit this page</span> 351 </a> 352 </div> 353 354 <nav class="flex mt-14"> 355 <div class="w-1/2"> 356 <a class="px-5 py-4 h-full flex items-center break-normal font-medium text-blue-500 dark:text-blue-400 border border-gray-300 hover:border-gray-400 dark:border-dark-650 dark:hover:border-dark-450 rounded-l-lg transition-colors duration-150 relative hover:z-5" href="../"> 357 <svg xmlns="http://www.w3.org/2000/svg" class="mr-3" width="24" height="24" viewBox="0 0 24 24" fill="currentColor" overflow="visible"><path d="M19 11H7.41l5.29-5.29a.996.996 0 10-1.41-1.41l-7 7a1 1 0 000 1.42l7 7a1.024 1.024 0 001.42-.01.996.996 0 000-1.41L7.41 13H19c.55 0 1-.45 1-1s-.45-1-1-1z" /><path fill="none" d="M0 0h24v24H0z" /></svg> 358 <span> 359 <span class="block text-xs font-normal text-gray-400 dark:text-dark-400">Previous</span> 360 <span class="block mt-1">Introduction</span> 361 </span> 362 </a> 363 </div> 364 365 <div class="w-1/2"> 366 <a class="px-5 py-4 -mx-px h-full flex items-center justify-end break-normal font-medium text-blue-500 dark:text-blue-400 border border-gray-300 hover:border-gray-400 dark:border-dark-650 dark:hover:border-dark-450 rounded-r-lg transition-colors duration-150 relative hover:z-5" href="../commands/"> 367 <span> 368 <span class="block text-xs font-normal text-right text-gray-400 dark:text-dark-400">Next</span> 369 <span class="block mt-1">Commands</span> 370 </span> 371 <svg xmlns="http://www.w3.org/2000/svg" class="ml-3" width="24" height="24" viewBox="0 0 24 24" fill="currentColor" overflow="visible"><path d="M19.92 12.38a1 1 0 00-.22-1.09l-7-7a.996.996 0 10-1.41 1.41l5.3 5.3H5c-.55 0-1 .45-1 1s.45 1 1 1h11.59l-5.29 5.29a.996.996 0 000 1.41c.19.2.44.3.7.3s.51-.1.71-.29l7-7c.09-.09.16-.21.21-.33z" /><path fill="none" d="M0 0h24v24H0z" /></svg> 372 </a> 373 </div> 374 </nav> 375 </footer> 376 </main> 377 378 <div class="border-t dark:border-dark-650 pt-6 mb-8"> 379 <footer class="flex flex-wrap items-center justify-between"> 380 <div> 381 <ul class="flex flex-wrap items-center text-sm"> 382 <li> 383 <a class="block mr-4 py-2 text-sm whitespace-nowrap transition-colors duration-200 ease-linear text-blue-500 dark:text-blue-400 hover:text-blue-800 dark:hover:text-blue-200 md:mb-0" href="https://github.com/gemstation/gemforge">Github</a> 384 </li> 385 </ul> 386 </div> 387 <div class="docs-copyright py-2 text-gray-500 dark:text-dark-350 text-sm leading-relaxed"><p>© Copyright 2025 <a href="https://gemforge.xyz">Gemforge</a>. All rights reserved.</p></div> 388 </footer> 389 </div> 390 </div> 391 392 <!-- Rendered if sidebar right is enabled --> 393 <!-- Sidebar right skeleton--> 394 <div v-cloak class="fixed top-0 bottom-0 right-0 translate-x-full bg-white border-gray-200 lg:sticky lg:border-l lg:shrink-0 lg:pt-6 lg:transform-none sm:w-1/2 lg:w-64 lg:z-0 md:w-104 sidebar-right skeleton dark:bg-dark-850 dar
394k:border-dark-650"> 395 <div class="pl-5"> 396 <div class="w-32 h-3 mb-4 bg-gray-200 dark:bg-dark-600 rounded-full loading"></div> 397 <div class="w-48 h-3 mb-4 bg-gray-200 dark:bg-dark-600 rounded-full loading"></div> 398 <div class="w-40 h-3 mb-4 bg-gray-200 dark:bg-dark-600 rounded-full loading"></div> 399 </div> 400 </div> 401 402 <!-- User should be able to hide sidebar right --> 403 <doc-sidebar-right v-cloak></doc-sidebar-right> 404 </div> 405 406 </div> 407 </div> 408 409 <doc-search-mobile></doc-search-mobile> 410 <doc-back-to-top></doc-back-to-top> 411 </div> 412 413 414 <div id="docs-overlay-target"></div> 415 416
416<script data-cfasync="false">window.__DOCS__ = { "title": "Getting started", level: 1, icon: "file", hasPrism: true, hasMermaid: false, hasMath: false, tocDepth: 23 }</script>
vendor: 1 bytes, line 416
416
417<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"8a8d73ad48b840ccb426530c44511052","r":1,"spa":2}' crossorigin="anonymous"></script>
417 418</body> 419</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.