{"id":7107,"date":"2020-05-25T08:03:54","date_gmt":"2020-05-25T03:03:54","guid":{"rendered":"https:\/\/ahmadawais.com\/?p=7107"},"modified":"2020-06-02T14:21:15","modified_gmt":"2020-06-02T09:21:15","slug":"next-js-absolute-imports-aliases","status":"publish","type":"post","link":"https:\/\/ahmadawais.com\/next-js-absolute-imports-aliases\/","title":{"rendered":"Next.js Absolute Imports and Aliases"},"content":{"rendered":"<\/section>\n<div class=\"postcontents full\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-7119\" src=\"https:\/\/ahmadawais.com\/wp-content\/uploads\/2020\/05\/nextjs-absolute-import-aliases-3.jpg\" alt=\"Nextjs Absolute Import Aliases\" width=\"1920\" height=\"1080\" srcset=\"https:\/\/ahmadawais.com\/wp-content\/uploads\/2020\/05\/nextjs-absolute-import-aliases-3.jpg 1920w, https:\/\/ahmadawais.com\/wp-content\/uploads\/2020\/05\/nextjs-absolute-import-aliases-3-300x169.jpg 300w, https:\/\/ahmadawais.com\/wp-content\/uploads\/2020\/05\/nextjs-absolute-import-aliases-3-1024x576.jpg 1024w, https:\/\/ahmadawais.com\/wp-content\/uploads\/2020\/05\/nextjs-absolute-import-aliases-3-768x432.jpg 768w, https:\/\/ahmadawais.com\/wp-content\/uploads\/2020\/05\/nextjs-absolute-import-aliases-3-1536x864.jpg 1536w, https:\/\/ahmadawais.com\/wp-content\/uploads\/2020\/05\/nextjs-absolute-import-aliases-3-1680x945.jpg 1680w, https:\/\/ahmadawais.com\/wp-content\/uploads\/2020\/05\/nextjs-absolute-import-aliases-3-860x484.jpg 860w, https:\/\/ahmadawais.com\/wp-content\/uploads\/2020\/05\/nextjs-absolute-import-aliases-3-680x383.jpg 680w, https:\/\/ahmadawais.com\/wp-content\/uploads\/2020\/05\/nextjs-absolute-import-aliases-3-400x225.jpg 400w, https:\/\/ahmadawais.com\/wp-content\/uploads\/2020\/05\/nextjs-absolute-import-aliases-3-50x28.jpg 50w, https:\/\/ahmadawais.com\/wp-content\/uploads\/2020\/05\/nextjs-absolute-import-aliases-3-600x338.jpg 600w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/div>\n<section class=\"postcontents wrapper\">\n<p>Since Next.js <code>v9.4<\/code> you have the ability to use absolute imports or aliases for your import statements. I love this feature with all my heart.<\/p>\n<p>When working on a large project you end up with the spaghetti import statements like <code>.\/..\/..\/..\/..\/<\/code>. This happens because your folder structure grows and you end up importing files from here and there.<\/p>\n<p>With Next.js <code>v9.4<\/code> you can do away with the spaghetti import statements using either the absolute imports or by creating aliases. This would change the following import statement from<\/p>\n<h4 id=\"before\">BEFORE<a href=\"#before\" class=\"heading-link\">#<\/a><\/h4>\n<pre class=\"lang:javascript\">import Heading from '..\/..\/..\/..\/components\/heading'<\/pre>\n<h4 id=\"after\">AFTER<a href=\"#after\" class=\"heading-link\">#<\/a><\/h4>\n<pre class=\"lang:javascript\">import Heading from 'components\/heading'<\/pre>\n<p>Let&#8217;s see how to implement this.<\/p>\n<h3 id=\"next-js-absolute-imports\">Next.js Absolute Imports<a href=\"#next-js-absolute-imports\" class=\"heading-link\">#<\/a><\/h3>\n<p>Basically you only need to make Next.js aware of the project <code>baseUrl<\/code> which can be configured via <a href=\"https:\/\/code.visualstudio.com\/docs\/languages\/jsconfig#_jsconfig-options\" target=\"_blank\" rel=\"noopener noreferrer\"><code>jsconfig.json<\/code> (JS projects)<\/a> or <a href=\"https:\/\/www.typescriptlang.org\/docs\/handbook\/module-resolution.html#base-url\" target=\"_blank\" rel=\"noopener noreferrer\"><code>tsconfig.json<\/code> (TS projects)<\/a>. That&#8217;s about it.<\/p>\n<ol>\n<li>Create a <code>jsconfig.json<\/code> or <code class=\"jsx-2411693156 \">tsconfig.json<\/code> file<\/li>\n<li>Add <code>compilerOptions<\/code> object with the <code>baseUrl<\/code><\/li>\n<\/ol>\n<pre class=\"lang:javascript\">\/\/ Your jsconfig.json or tsconfig.json\r\n{\r\n  \"compilerOptions\": {\r\n    \"baseUrl\": \".\"\r\n  }\r\n}<\/pre>\n<p>Here <code>.<\/code> defines the base URL of the project to be the root directory.<\/p>\n<p>So, if you have a directory called <code>components<\/code> in the root of your project, you can then import directly from that directory without any spaghetti import statements. This is very well integrated with editors like VSCode.<\/p>\n<p>Now you can import components like this:<\/p>\n<pre class=\"lang:javascript\">import Heading from 'components\/heading'<\/pre>\n<p>But what if you want to define fancy aliases to these directories you have?<\/p>\n<h3 id=\"next-js-aliases\">Next.js Aliases<a href=\"#next-js-aliases\" class=\"heading-link\">#<\/a><\/h3>\n<p>Next.js import aliases help you define, well aliases to paths in your project. <em>WTFOMGBBG is that? <\/em>Well, allow me to explain.<\/p>\n<p>Imagine you have a layout system and all the layout components are inside the <code>components\/Layout<\/code> directory. Even if you define the absolute URLs you would still end up writing long import statements like the following:<\/p>\n<pre class=\"lang:javascript\">import Container from 'components\/Layout\/Container';<\/pre>\n<p>But in addition the <code>baseUrl<\/code> you can define a <code>paths<\/code> option which allows you to create custom module aliases.<\/p>\n<pre class=\"lang:javascript\">\/\/ Your jsconfig.json or tsconfig.json file.\r\n{\r\n  \"compilerOptions\": {\r\n    \"baseUrl\": \".\",\r\n    \"paths\": {\r\n      \"@\/layout\/*\": [\"components\/Layout\/*\"]\r\n    }\r\n  }\r\n}<\/pre>\n<p>Now that we have defined the <code>@\/layout\/<\/code> alias for all the files in the <code>components\/Layout\/<\/code> directory, you can import them like this:<\/p>\n<pre class=\"lang:javascript\">import Container from '@\/layout\/Container';<\/pre>\n<blockquote><p><strong>\u26a0\ufe0f REMEMBER<\/strong>:<\/p>\n<ol>\n<li>You must specify <code>baseUrl<\/code> if you specify <code>paths<\/code>. You can learn more about the <code>paths<\/code> option <a href=\"https:\/\/www.typescriptlang.org\/docs\/handbook\/module-resolution.html#path-mapping\" target=\"_blank\" rel=\"noopener noreferrer\">in the TypeScript documentation<\/a>.<\/li>\n<li>If you have the <code>next dev<\/code> running when you define a new path, make sure to restart <code>next dev<\/code>.<\/li>\n<\/ol>\n<\/blockquote>\n<p>Peace! \u270c\ufe0f<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Since Next.js v9.4 you have the ability to use absolute imports or aliases for your import statements. I love this feature with all my heart.<\/p>\n","protected":false},"author":2,"featured_media":7119,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"webmentions_disabled_pings":false,"webmentions_disabled":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[215],"tags":[270],"class_list":["post-7107","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-web","tag-next-js"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Next.js Absolute Imports and Aliases<\/title>\n<meta name=\"description\" content=\"Since Next.js v9.4 you have the ability to use absolute imports or aliases for your import statements. I love this feature with all my heart.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ahmadawais.com\/next-js-absolute-imports-aliases\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Next.js Absolute Imports and Aliases\" \/>\n<meta property=\"og:description\" content=\"Since Next.js v9.4 you have the ability to use absolute imports or aliases for your import statements. I love this feature with all my heart.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ahmadawais.com\/next-js-absolute-imports-aliases\/\" \/>\n<meta property=\"og:site_name\" content=\"Ahmad Awais\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/AhmadAwais\" \/>\n<meta property=\"article:author\" content=\"https:\/\/facebook.com\/AhmadAwais\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-25T03:03:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-06-02T09:21:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ahmadawais.com\/wp-content\/uploads\/2020\/05\/nextjs-absolute-import-aliases-3.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Ahmad Awais\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@MrAhmadAwais\" \/>\n<meta name=\"twitter:site\" content=\"@MrAhmadAwais\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ahmad Awais\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/ahmadawais.com\\\/next-js-absolute-imports-aliases\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ahmadawais.com\\\/next-js-absolute-imports-aliases\\\/\"},\"author\":{\"name\":\"Ahmad Awais\",\"@id\":\"https:\\\/\\\/ahmadawais.com\\\/#\\\/schema\\\/person\\\/1d1b9504182dca2315cf039fb4ebb85b\"},\"headline\":\"Next.js Absolute Imports and Aliases\",\"datePublished\":\"2020-05-25T03:03:54+00:00\",\"dateModified\":\"2020-06-02T09:21:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/ahmadawais.com\\\/next-js-absolute-imports-aliases\\\/\"},\"wordCount\":344,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/ahmadawais.com\\\/#\\\/schema\\\/person\\\/1d1b9504182dca2315cf039fb4ebb85b\"},\"image\":{\"@id\":\"https:\\\/\\\/ahmadawais.com\\\/next-js-absolute-imports-aliases\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ahmadawais.com\\\/wp-content\\\/uploads\\\/2020\\\/05\\\/nextjs-absolute-import-aliases-3.jpg\",\"keywords\":[\"Next.js\"],\"articleSection\":[\"Web\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/ahmadawais.com\\\/next-js-absolute-imports-aliases\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/ahmadawais.com\\\/next-js-absolute-imports-aliases\\\/\",\"url\":\"https:\\\/\\\/ahmadawais.com\\\/next-js-absolute-imports-aliases\\\/\",\"name\":\"Next.js Absolute Imports and Aliases\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ahmadawais.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/ahmadawais.com\\\/next-js-absolute-imports-aliases\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/ahmadawais.com\\\/next-js-absolute-imports-aliases\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ahmadawais.com\\\/wp-content\\\/uploads\\\/2020\\\/05\\\/nextjs-absolute-import-aliases-3.jpg\",\"datePublished\":\"2020-05-25T03:03:54+00:00\",\"dateModified\":\"2020-06-02T09:21:15+00:00\",\"description\":\"Since Next.js v9.4 you have the ability to use absolute imports or aliases for your import statements. I love this feature with all my heart.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/ahmadawais.com\\\/next-js-absolute-imports-aliases\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/ahmadawais.com\\\/next-js-absolute-imports-aliases\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/ahmadawais.com\\\/next-js-absolute-imports-aliases\\\/#primaryimage\",\"url\":\"https:\\\/\\\/ahmadawais.com\\\/wp-content\\\/uploads\\\/2020\\\/05\\\/nextjs-absolute-import-aliases-3.jpg\",\"contentUrl\":\"https:\\\/\\\/ahmadawais.com\\\/wp-content\\\/uploads\\\/2020\\\/05\\\/nextjs-absolute-import-aliases-3.jpg\",\"width\":1920,\"height\":1080,\"caption\":\"Nextjs Absolute Import Aliases\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/ahmadawais.com\\\/next-js-absolute-imports-aliases\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/ahmadawais.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Next.js Absolute Imports and Aliases\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/ahmadawais.com\\\/#website\",\"url\":\"https:\\\/\\\/ahmadawais.com\\\/\",\"name\":\"Ahmad Awais\",\"description\":\"Founder &amp; CEO of CommandCode.ai f\\\/k\\\/a Langbase | Google Developers Advisory Board (gDAB) founding member\",\"publisher\":{\"@id\":\"https:\\\/\\\/ahmadawais.com\\\/#\\\/schema\\\/person\\\/1d1b9504182dca2315cf039fb4ebb85b\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/ahmadawais.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/ahmadawais.com\\\/#\\\/schema\\\/person\\\/1d1b9504182dca2315cf039fb4ebb85b\",\"name\":\"Ahmad Awais\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/ahmadawais.com\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/Ahmad-Awais-face.jpg\",\"url\":\"https:\\\/\\\/ahmadawais.com\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/Ahmad-Awais-face.jpg\",\"contentUrl\":\"https:\\\/\\\/ahmadawais.com\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/Ahmad-Awais-face.jpg\",\"width\":2299,\"height\":1705,\"caption\":\"Ahmad Awais\"},\"logo\":{\"@id\":\"https:\\\/\\\/ahmadawais.com\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/Ahmad-Awais-face.jpg\"},\"description\":\"Founder & CEO of \u2318 Command Code coding agent with taste. Founded Langbase.com, AI cloud to build, deploy, and scale AI agents with tools & memory \u00b7 Creator of Command.new. \\\"Awais is an awesome example for developers\\\" \u2014 Satya Nadella, CEO of Microsoft. NASA Mars Ingenuity Helicopter mission code contributor 8th GitHub Stars Award recipient with 5x GitHub Stars Award (Listed as GitHub's #1 JavaScript trending developer). Google Developers Expert Web DevRel. Ex VP Eng (DevTools & DevRel) Rapid \u00b7 Google Developers Advisory Board (gDAB) founding member \u00b7 AI\\\/ML\\\/DevTools Angel Investor (Replit, Resend, Daytona, Gumroad and you?) \u276f AI\\\/ML Advisory Board San Francisco, DevNetwork. Award-winning Open Source Engineering leader authored hundreds of open-source dev-tools and software libraries used by millions of developers, including Shades of Purple code theme and corona-cli. Linux Foundation (Node.js Committee Lead), OpenAPI Business Governing Board. Taught 108K+ developers via NodeCLI.com and VSCode.pro course. 274 million views, blogging for 24 yrs. \u276f Read more about Ahmad Awais or come say hi on \ud835\udd4f @MrAhmadAwais.\",\"sameAs\":[\"https:\\\/\\\/AhmadAwais.com\\\/\",\"https:\\\/\\\/facebook.com\\\/AhmadAwais\",\"https:\\\/\\\/instagram.com\\\/MrAhmadAwais\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/MrAhmadAwais\\\/\",\"https:\\\/\\\/x.com\\\/MrAhmadAwais\",\"https:\\\/\\\/youtube.com\\\/AhmadAwais\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Next.js Absolute Imports and Aliases","description":"Since Next.js v9.4 you have the ability to use absolute imports or aliases for your import statements. I love this feature with all my heart.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ahmadawais.com\/next-js-absolute-imports-aliases\/","og_locale":"en_US","og_type":"article","og_title":"Next.js Absolute Imports and Aliases","og_description":"Since Next.js v9.4 you have the ability to use absolute imports or aliases for your import statements. I love this feature with all my heart.","og_url":"https:\/\/ahmadawais.com\/next-js-absolute-imports-aliases\/","og_site_name":"Ahmad Awais","article_publisher":"https:\/\/facebook.com\/AhmadAwais","article_author":"https:\/\/facebook.com\/AhmadAwais","article_published_time":"2020-05-25T03:03:54+00:00","article_modified_time":"2020-06-02T09:21:15+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/ahmadawais.com\/wp-content\/uploads\/2020\/05\/nextjs-absolute-import-aliases-3.jpg","type":"image\/jpeg"}],"author":"Ahmad Awais","twitter_card":"summary_large_image","twitter_creator":"@MrAhmadAwais","twitter_site":"@MrAhmadAwais","twitter_misc":{"Written by":"Ahmad Awais","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ahmadawais.com\/next-js-absolute-imports-aliases\/#article","isPartOf":{"@id":"https:\/\/ahmadawais.com\/next-js-absolute-imports-aliases\/"},"author":{"name":"Ahmad Awais","@id":"https:\/\/ahmadawais.com\/#\/schema\/person\/1d1b9504182dca2315cf039fb4ebb85b"},"headline":"Next.js Absolute Imports and Aliases","datePublished":"2020-05-25T03:03:54+00:00","dateModified":"2020-06-02T09:21:15+00:00","mainEntityOfPage":{"@id":"https:\/\/ahmadawais.com\/next-js-absolute-imports-aliases\/"},"wordCount":344,"commentCount":0,"publisher":{"@id":"https:\/\/ahmadawais.com\/#\/schema\/person\/1d1b9504182dca2315cf039fb4ebb85b"},"image":{"@id":"https:\/\/ahmadawais.com\/next-js-absolute-imports-aliases\/#primaryimage"},"thumbnailUrl":"https:\/\/ahmadawais.com\/wp-content\/uploads\/2020\/05\/nextjs-absolute-import-aliases-3.jpg","keywords":["Next.js"],"articleSection":["Web"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ahmadawais.com\/next-js-absolute-imports-aliases\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ahmadawais.com\/next-js-absolute-imports-aliases\/","url":"https:\/\/ahmadawais.com\/next-js-absolute-imports-aliases\/","name":"Next.js Absolute Imports and Aliases","isPartOf":{"@id":"https:\/\/ahmadawais.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ahmadawais.com\/next-js-absolute-imports-aliases\/#primaryimage"},"image":{"@id":"https:\/\/ahmadawais.com\/next-js-absolute-imports-aliases\/#primaryimage"},"thumbnailUrl":"https:\/\/ahmadawais.com\/wp-content\/uploads\/2020\/05\/nextjs-absolute-import-aliases-3.jpg","datePublished":"2020-05-25T03:03:54+00:00","dateModified":"2020-06-02T09:21:15+00:00","description":"Since Next.js v9.4 you have the ability to use absolute imports or aliases for your import statements. I love this feature with all my heart.","breadcrumb":{"@id":"https:\/\/ahmadawais.com\/next-js-absolute-imports-aliases\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ahmadawais.com\/next-js-absolute-imports-aliases\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ahmadawais.com\/next-js-absolute-imports-aliases\/#primaryimage","url":"https:\/\/ahmadawais.com\/wp-content\/uploads\/2020\/05\/nextjs-absolute-import-aliases-3.jpg","contentUrl":"https:\/\/ahmadawais.com\/wp-content\/uploads\/2020\/05\/nextjs-absolute-import-aliases-3.jpg","width":1920,"height":1080,"caption":"Nextjs Absolute Import Aliases"},{"@type":"BreadcrumbList","@id":"https:\/\/ahmadawais.com\/next-js-absolute-imports-aliases\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ahmadawais.com\/"},{"@type":"ListItem","position":2,"name":"Next.js Absolute Imports and Aliases"}]},{"@type":"WebSite","@id":"https:\/\/ahmadawais.com\/#website","url":"https:\/\/ahmadawais.com\/","name":"Ahmad Awais","description":"Founder &amp; CEO of CommandCode.ai f\/k\/a Langbase | Google Developers Advisory Board (gDAB) founding member","publisher":{"@id":"https:\/\/ahmadawais.com\/#\/schema\/person\/1d1b9504182dca2315cf039fb4ebb85b"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ahmadawais.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/ahmadawais.com\/#\/schema\/person\/1d1b9504182dca2315cf039fb4ebb85b","name":"Ahmad Awais","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ahmadawais.com\/wp-content\/uploads\/2020\/06\/Ahmad-Awais-face.jpg","url":"https:\/\/ahmadawais.com\/wp-content\/uploads\/2020\/06\/Ahmad-Awais-face.jpg","contentUrl":"https:\/\/ahmadawais.com\/wp-content\/uploads\/2020\/06\/Ahmad-Awais-face.jpg","width":2299,"height":1705,"caption":"Ahmad Awais"},"logo":{"@id":"https:\/\/ahmadawais.com\/wp-content\/uploads\/2020\/06\/Ahmad-Awais-face.jpg"},"description":"Founder & CEO of \u2318 Command Code coding agent with taste. Founded Langbase.com, AI cloud to build, deploy, and scale AI agents with tools & memory \u00b7 Creator of Command.new. \"Awais is an awesome example for developers\" \u2014 Satya Nadella, CEO of Microsoft. NASA Mars Ingenuity Helicopter mission code contributor 8th GitHub Stars Award recipient with 5x GitHub Stars Award (Listed as GitHub's #1 JavaScript trending developer). Google Developers Expert Web DevRel. Ex VP Eng (DevTools & DevRel) Rapid \u00b7 Google Developers Advisory Board (gDAB) founding member \u00b7 AI\/ML\/DevTools Angel Investor (Replit, Resend, Daytona, Gumroad and you?) \u276f AI\/ML Advisory Board San Francisco, DevNetwork. Award-winning Open Source Engineering leader authored hundreds of open-source dev-tools and software libraries used by millions of developers, including Shades of Purple code theme and corona-cli. Linux Foundation (Node.js Committee Lead), OpenAPI Business Governing Board. Taught 108K+ developers via NodeCLI.com and VSCode.pro course. 274 million views, blogging for 24 yrs. \u276f Read more about Ahmad Awais or come say hi on \ud835\udd4f @MrAhmadAwais.","sameAs":["https:\/\/AhmadAwais.com\/","https:\/\/facebook.com\/AhmadAwais","https:\/\/instagram.com\/MrAhmadAwais\/","https:\/\/www.linkedin.com\/in\/MrAhmadAwais\/","https:\/\/x.com\/MrAhmadAwais","https:\/\/youtube.com\/AhmadAwais"]}]}},"jetpack_featured_media_url":"https:\/\/ahmadawais.com\/wp-content\/uploads\/2020\/05\/nextjs-absolute-import-aliases-3.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ahmadawais.com\/api\/wp\/v2\/posts\/7107","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ahmadawais.com\/api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ahmadawais.com\/api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ahmadawais.com\/api\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ahmadawais.com\/api\/wp\/v2\/comments?post=7107"}],"version-history":[{"count":5,"href":"https:\/\/ahmadawais.com\/api\/wp\/v2\/posts\/7107\/revisions"}],"predecessor-version":[{"id":7130,"href":"https:\/\/ahmadawais.com\/api\/wp\/v2\/posts\/7107\/revisions\/7130"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ahmadawais.com\/api\/wp\/v2\/media\/7119"}],"wp:attachment":[{"href":"https:\/\/ahmadawais.com\/api\/wp\/v2\/media?parent=7107"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ahmadawais.com\/api\/wp\/v2\/categories?post=7107"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ahmadawais.com\/api\/wp\/v2\/tags?post=7107"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}