{"id":195412,"date":"2018-06-21T16:03:06","date_gmt":"2018-06-21T16:03:06","guid":{"rendered":"http:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=195412"},"modified":"2018-06-21T16:03:06","modified_gmt":"2018-06-21T16:03:06","slug":"introducing-a-cli-for-the-arcgis-api-for-javascript","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/introducing-a-cli-for-the-arcgis-api-for-javascript","title":{"rendered":"Introducing a cli for the ArcGIS API for JavaScript"},"author":7531,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[22941],"tags":[96582,115282,27491,34861,36161],"industry":[],"product":[36831,36601],"class_list":["post-195412","blog","type-blog","status-publish","format-standard","hentry","category-mapping","tag-arcgis-api-for-javascript","tag-cli","tag-jsapi4","tag-typescript","tag-web-development","product-js-api-arcgis","product-developers"],"acf":{"short_description":"Learn how to use the new @arcgis\/cli to quickly create applications and widgets for the ArcGIS API for JavaScript today!","flexible_content":[{"acf_fc_layout":"content","content":"<p>In our continued efforts to help improve the developer experience for users of the <a href=\"https:\/\/developers.arcgis.com\/javascript\/\" target=\"_blank\" rel=\"noopener\">ArcGIS API for JavaScript<\/a>, we have released a new tool you can use to quickly create an application and build custom widgets!<\/p>\n<p>Presenting: the <strong><a href=\"https:\/\/github.com\/Esri\/arcgis-js-cli\" target=\"_blank\" rel=\"noopener\">@arcgis\/cli<\/a><\/strong>.<\/p>\n<p>A cli is a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Command-line_interface\" target=\"_blank\" rel=\"noopener\">Command Line Interface<\/a>. A cli can offer more power and control to users than with a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Graphical_user_interface\" target=\"_blank\" rel=\"noopener\">graphical user interface<\/a>. Many frameworks and libraries have a cli, including: Ember, React, Dojo, and Angular. So we didn&#8217;t want to feel left out.<\/p>\n<p>You can install it via <a href=\"https:\/\/www.npmjs.com\/\" target=\"_blank\" rel=\"noopener\">npm<\/a> with following command.<\/p>\n<pre><code style=\"display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; -webkit-text-size-adjust: none;\">\r\nnpm install -g @arcgis\/cli\r\n<\/code><\/pre>\n<p>Once installed you can now use the <a href=\"https:\/\/github.com\/Esri\/arcgis-js-cli\" target=\"_blank\" rel=\"noopener\">@arcgis\/cli<\/a>\u00a0to scaffold a new application, using the <code>create<\/code> command and passing an application name.<\/p>\n<pre><code style=\"display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; -webkit-text-size-adjust: none;\">\r\narcgis create awesome\r\n<\/code><\/pre>\n"},{"acf_fc_layout":"image","image":{"ID":239412,"id":239412,"title":"Introducing-cli-for-the-ArcGIS-API-for-JavaScript-app","filename":"Introducing-cli-for-the-ArcGIS-API-for-JavaScript-app.gif","filesize":50497,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/05\/Introducing-cli-for-the-ArcGIS-API-for-JavaScript-app.gif","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/introducing-a-cli-for-the-arcgis-api-for-javascript\/introducing-cli-for-the-arcgis-api-for-javascript-app","alt":"","author":"7531","description":"","caption":"","name":"introducing-cli-for-the-arcgis-api-for-javascript-app","status":"inherit","uploaded_to":195412,"date":"2018-06-19 17:06:52","modified":"2018-06-19 17:06:52","menu_order":0,"mime_type":"image\/gif","type":"image","subtype":"gif","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":687,"height":185,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/05\/Introducing-cli-for-the-ArcGIS-API-for-JavaScript-app.gif","thumbnail-width":213,"thumbnail-height":57,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/05\/Introducing-cli-for-the-ArcGIS-API-for-JavaScript-app.gif","medium-width":464,"medium-height":125,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/05\/Introducing-cli-for-the-ArcGIS-API-for-JavaScript-app.gif","medium_large-width":687,"medium_large-height":185,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/05\/Introducing-cli-for-the-ArcGIS-API-for-JavaScript-app.gif","large-width":687,"large-height":185,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/05\/Introducing-cli-for-the-ArcGIS-API-for-JavaScript-app.gif","1536x1536-width":687,"1536x1536-height":185,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/05\/Introducing-cli-for-the-ArcGIS-API-for-JavaScript-app.gif","2048x2048-width":687,"2048x2048-height":185,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/05\/Introducing-cli-for-the-ArcGIS-API-for-JavaScript-app.gif","card_image-width":687,"card_image-height":185,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/05\/Introducing-cli-for-the-ArcGIS-API-for-JavaScript-app.gif","wide_image-width":687,"wide_image-height":185}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>The <a href=\"https:\/\/github.com\/Esri\/arcgis-js-cli\" target=\"_blank\" rel=\"noopener\">@arcgis\/cli<\/a>\u00a0will install a template application for you that is written in <a href=\"http:\/\/www.typescriptlang.org\/\" target=\"_blank\" rel=\"noopener\">TypeScript<\/a>, uses the <a href=\"https:\/\/github.com\/esri\/arcgis-webpack-plugin\" target=\"_blank\" rel=\"noopener\"><em>@arcgis\/webpack-plugin<\/em><\/a>, includes a <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/guide\/custom-widget\/index.html\" target=\"_blank\" rel=\"noopener\">custom widget<\/a>, and uses <a href=\"https:\/\/theintern.io\/\" target=\"_blank\" rel=\"noopener\">Intern<\/a> for unit testing. See our recent blog about <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/using-the-new-webpack-plugin-for-the-arcgis-api-for-javascript\/\" target=\"_blank\" rel=\"noopener\">using the @arcgis\/webpack-plugin<\/a>, and our <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/guide\/using-webpack\/index.html\" target=\"_blank\" rel=\"noopener\">Using webpack for Custom Builds<\/a> guide, for more information. The template application includes everything you need to quickly start building production ready applications. Here&#8217;s what the file structure of a newly created application will look like:<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":239722,"id":239722,"title":"Introducing-cli-for-the-ArcGIS-API-for-JavaScript-template","filename":"Introducing-cli-for-the-ArcGIS-API-for-JavaScript-template.png","filesize":36947,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/06\/Introducing-cli-for-the-ArcGIS-API-for-JavaScript-template.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/introducing-a-cli-for-the-arcgis-api-for-javascript\/introducing-cli-for-the-arcgis-api-for-javascript-template","alt":"","author":"7531","description":"","caption":"","name":"introducing-cli-for-the-arcgis-api-for-javascript-template","status":"inherit","uploaded_to":195412,"date":"2018-06-19 18:16:49","modified":"2018-06-19 18:16:49","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":239,"height":1003,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/06\/Introducing-cli-for-the-ArcGIS-API-for-JavaScript-template.png","thumbnail-width":48,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/06\/Introducing-cli-for-the-ArcGIS-API-for-JavaScript-template.png","medium-width":62,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/06\/Introducing-cli-for-the-ArcGIS-API-for-JavaScript-template.png","medium_large-width":239,"medium_large-height":1003,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/06\/Introducing-cli-for-the-ArcGIS-API-for-JavaScript-template.png","large-width":239,"large-height":1003,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/06\/Introducing-cli-for-the-ArcGIS-API-for-JavaScript-template.png","1536x1536-width":239,"1536x1536-height":1003,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/06\/Introducing-cli-for-the-ArcGIS-API-for-JavaScript-template.png","2048x2048-width":239,"2048x2048-height":1003,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/06\/Introducing-cli-for-the-ArcGIS-API-for-JavaScript-template.png","card_image-width":111,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/06\/Introducing-cli-for-the-ArcGIS-API-for-JavaScript-template.png","wide_image-width":239,"wide_image-height":1003}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h2>But that&#8217;s not all&#8230;<\/h2>\n<p>The <a href=\"https:\/\/github.com\/Esri\/arcgis-js-cli\" target=\"_blank\" rel=\"noopener\">@arcgis\/cli<\/a>\u00a0also includes a command so that you can scaffold a <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/guide\/custom-widget\/index.html\" target=\"_blank\" rel=\"noopener\">custom widget<\/a> as well. You can scaffold custom widgets with the <code>widget<\/code> command and pass it a widget name.<\/p>\n<pre><code style=\"display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; -webkit-text-size-adjust: none;\">\r\narcgis widget awesome-widget\r\n<\/code><\/pre>\n<p>This will not only create your custom widget, but it will also create a simple unit test to accompany the widget. <em>No more excuses to skip writing tests.<\/em><\/p>\n<p>This is what the code for your custom widget will look like.<\/p>\n<pre><code style=\"display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; -webkit-text-size-adjust: none;\">\r\n@subclass(<span style=\"color: #d14;\">\"widgets.AwesomeWidget\"<\/span>)\r\n<span style=\"color: #333; font-weight: bold;\">class<\/span> <span style=\"color: #458; font-weight: bold;\">AwesomeWidget<\/span> <span style=\"color: #333; font-weight: bold;\">extends<\/span> <span style=\"color: #458; font-weight: bold;\">declared<\/span>(<span style=\"color: #458; font-weight: bold;\">Widget<\/span>) {\r\n  @aliasOf(<span style=\"color: #d14;\">\"viewModel.name\"<\/span>)\r\n  @renderable()\r\n  name = <span style=\"color: #d14;\">\"\"<\/span>;\r\n\r\n  @property({\r\n    type: AwesomeWidgetViewModel\r\n  })\r\n  viewModel= <span style=\"color: #333; font-weight: bold;\">new<\/span> AwesomeWidgetViewModel();\r\n\r\n  render() {\r\n    <span style=\"color: #333; font-weight: bold;\">return<\/span> (\r\n      <span style=\"color: #000080; font-weight: normal;\">&lt;<span style=\"color: #000080; font-weight: normal;\">div<\/span> <span style=\"color: #008080;\">class<\/span>=<span style=\"color: #d14;\">{CSS.base}<\/span>&gt;<\/span>\r\n        <span style=\"color: #000080; font-weight: normal;\">&lt;<span style=\"color: #000080; font-weight: normal;\">p<\/span>&gt;<\/span>\r\n          Welcome {this.name}!\r\n        <span style=\"color: #000080; font-weight: normal;\">&lt;\/<span style=\"color: #000080; font-weight: normal;\">p<\/span>&gt;<\/span>\r\n      <span style=\"color: #000080; font-weight: normal;\">&lt;\/<span style=\"color: #000080; font-weight: normal;\">div<\/span>&gt;<\/span>\r\n    );\r\n  }\r\n}\r\n\r\n<\/code><\/pre>\n<p>With the <a href=\"https:\/\/github.com\/Esri\/arcgis-js-cli\" target=\"_blank\" rel=\"noopener\">@arcgis\/cli<\/a>, you can get started without having to worry about setting up your webpack configuration or your development environment. <em>You can just start writing code and building apps!<\/em><\/p>\n<p>Our goal is to make it easier for you to build awesome mapping applications. We look forward to seeing what you can do next!<\/p>\n"}],"authors":[{"ID":7531,"user_firstname":"Rene","user_lastname":"Rubalcava","nickname":"r.rubalcava","user_nicename":"r-rubalcava","display_name":"Rene Rubalcava","user_email":"RRubalcava@esri.com","user_url":"http:\/\/odoe.net\/","user_registered":"2018-03-21 18:21:22","user_description":"SoftWhere Developer, blogger, author, geodev, and connoisseur of programming languages and JavaScript frameworks.\r\n\r\nI blog at https:\/\/odoe.net and post videos at https:\/\/www.youtube.com\/c\/renerubalcava\r\n\r\nI write code, sometimes it even works.","user_avatar":"<img data-del=\"avatar\" src='https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/03\/ReneRubalcava-213x200.png' class='avatar pp-user-avatar avatar-96 photo ' height='96' width='96'\/>"},{"ID":7451,"user_firstname":"Noah","user_lastname":"Sager","nickname":"Noah Sager","user_nicename":"noah-sager","display_name":"Noah Sager","user_email":"NSager@esri.com","user_url":"https:\/\/www.noahsager.net\/","user_registered":"2018-03-21 18:21:19","user_description":"Passionate about JavaScript, maps, and writing (not necessarily in that order). Big fan of squirrels. Journeyman mapper of Utility Lines and Public Restrooms. Product Engineer on the ArcGIS API for JavaScript team. In Noah\u2019s spare time, he also enjoys parenting.","user_avatar":"<img alt='' src='https:\/\/secure.gravatar.com\/avatar\/6807cdccf3ddd5b30b84cdf9368ce6736c3d0ff9bd0a09c1f5efc03253069b64?s=96&#038;d=blank&#038;r=g' srcset='https:\/\/secure.gravatar.com\/avatar\/6807cdccf3ddd5b30b84cdf9368ce6736c3d0ff9bd0a09c1f5efc03253069b64?s=192&#038;d=blank&#038;r=g 2x' class='avatar avatar-96 photo' height='96' width='96' loading='lazy' decoding='async'\/>"}],"related_articles":[{"ID":160171,"post_author":"7531","post_date":"2018-04-27 07:00:58","post_date_gmt":"2018-04-27 07:00:58","post_content":"","post_title":"Using the new webpack plugin for the ArcGIS API for JavaScript","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"using-the-new-webpack-plugin-for-the-arcgis-api-for-javascript","to_ping":"","pinged":"","post_modified":"2018-05-03 16:58:56","post_modified_gmt":"2018-05-03 16:58:56","post_content_filtered":"","post_parent":0,"guid":"http:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=160171","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":82861,"post_author":"7451","post_date":"2018-02-26 08:10:48","post_date_gmt":"2018-02-26 08:10:48","post_content":"","post_title":"Maps App JavaScript","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"maps-app-javascript","to_ping":"","pinged":"","post_modified":"2018-04-25 20:42:44","post_modified_gmt":"2018-04-25 20:42:44","post_content_filtered":"","post_parent":0,"guid":"http:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/maps-app-javascript\/","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":140441,"post_author":"7451","post_date":"2018-04-19 17:30:15","post_date_gmt":"2018-04-19 17:30:15","post_content":"","post_title":"ArcGIS API for JavaScript versions 4.7 and 3.24 released","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"arcgis-api-for-javascript-versions-4-7-and-3-24-released","to_ping":"","pinged":"","post_modified":"2018-05-07 16:18:46","post_modified_gmt":"2018-05-07 16:18:46","post_content_filtered":"","post_parent":0,"guid":"http:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=140441","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"}],"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/06\/arcgis-cli-card.jpg","wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/06\/arcgis-cli-banner.jpg"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Introducing a cli for the ArcGIS API for JavaScript<\/title>\n<meta name=\"description\" content=\"An introduction to the @arcgis\/cli to quickly scaffold custom applications and widgets with the ArcGIS API for JavaScript!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/introducing-a-cli-for-the-arcgis-api-for-javascript\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introducing a cli for the ArcGIS API for JavaScript\" \/>\n<meta property=\"og:description\" content=\"An introduction to the @arcgis\/cli to quickly scaffold custom applications and widgets with the ArcGIS API for JavaScript!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/introducing-a-cli-for-the-arcgis-api-for-javascript\" \/>\n<meta property=\"og:site_name\" content=\"ArcGIS Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/esrigis\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ESRI\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/introducing-a-cli-for-the-arcgis-api-for-javascript#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/introducing-a-cli-for-the-arcgis-api-for-javascript\"},\"author\":{\"name\":\"Rene Rubalcava\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/5e8200af39ef9d178ccabb08822d96cd\"},\"headline\":\"Introducing a cli for the ArcGIS API for JavaScript\",\"datePublished\":\"2018-06-21T16:03:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/introducing-a-cli-for-the-arcgis-api-for-javascript\"},\"wordCount\":9,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"ArcGIS API for JavaScript\",\"cli\",\"jsapi4\",\"TypeScript\",\"Web Development\"],\"articleSection\":[\"Mapping\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/introducing-a-cli-for-the-arcgis-api-for-javascript\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/introducing-a-cli-for-the-arcgis-api-for-javascript\",\"name\":\"Introducing a cli for the ArcGIS API for JavaScript\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2018-06-21T16:03:06+00:00\",\"description\":\"An introduction to the @arcgis\/cli to quickly scaffold custom applications and widgets with the ArcGIS API for JavaScript!\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/introducing-a-cli-for-the-arcgis-api-for-javascript#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/introducing-a-cli-for-the-arcgis-api-for-javascript\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/introducing-a-cli-for-the-arcgis-api-for-javascript#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introducing a cli for the ArcGIS API for JavaScript\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"name\":\"ArcGIS Blog\",\"description\":\"Get insider info from Esri product teams\",\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\",\"name\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"width\":400,\"height\":400,\"caption\":\"Esri\"},\"image\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/esrigis\/\",\"https:\/\/x.com\/ESRI\",\"https:\/\/www.linkedin.com\/company\/5311\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/5e8200af39ef9d178ccabb08822d96cd\",\"name\":\"Rene Rubalcava\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/03\/ReneRubalcava-213x200.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/03\/ReneRubalcava-213x200.png\",\"caption\":\"Rene Rubalcava\"},\"description\":\"SoftWhere Developer, blogger, author, geodev, and connoisseur of programming languages and JavaScript frameworks. I blog at https:\/\/odoe.net and post videos at https:\/\/www.youtube.com\/c\/renerubalcava I write code, sometimes it even works.\",\"sameAs\":[\"http:\/\/odoe.net\/\",\"https:\/\/www.facebook.com\/odoenetgeo\/\",\"https:\/\/www.linkedin.com\/in\/renerubalcava\",\"https:\/\/x.com\/odoenet\"],\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/author\/r-rubalcava\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Introducing a cli for the ArcGIS API for JavaScript","description":"An introduction to the @arcgis\/cli to quickly scaffold custom applications and widgets with the ArcGIS API for JavaScript!","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:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/introducing-a-cli-for-the-arcgis-api-for-javascript","og_locale":"en_US","og_type":"article","og_title":"Introducing a cli for the ArcGIS API for JavaScript","og_description":"An introduction to the @arcgis\/cli to quickly scaffold custom applications and widgets with the ArcGIS API for JavaScript!","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/introducing-a-cli-for-the-arcgis-api-for-javascript","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","twitter_card":"summary_large_image","twitter_site":"@ESRI","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/introducing-a-cli-for-the-arcgis-api-for-javascript#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/introducing-a-cli-for-the-arcgis-api-for-javascript"},"author":{"name":"Rene Rubalcava","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/5e8200af39ef9d178ccabb08822d96cd"},"headline":"Introducing a cli for the ArcGIS API for JavaScript","datePublished":"2018-06-21T16:03:06+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/introducing-a-cli-for-the-arcgis-api-for-javascript"},"wordCount":9,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["ArcGIS API for JavaScript","cli","jsapi4","TypeScript","Web Development"],"articleSection":["Mapping"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/introducing-a-cli-for-the-arcgis-api-for-javascript","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/introducing-a-cli-for-the-arcgis-api-for-javascript","name":"Introducing a cli for the ArcGIS API for JavaScript","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2018-06-21T16:03:06+00:00","description":"An introduction to the @arcgis\/cli to quickly scaffold custom applications and widgets with the ArcGIS API for JavaScript!","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/introducing-a-cli-for-the-arcgis-api-for-javascript#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/introducing-a-cli-for-the-arcgis-api-for-javascript"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/introducing-a-cli-for-the-arcgis-api-for-javascript#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"Introducing a cli for the ArcGIS API for JavaScript"}]},{"@type":"WebSite","@id":"https:\/\/www.esri.com\/arcgis-blog\/#website","url":"https:\/\/www.esri.com\/arcgis-blog\/","name":"ArcGIS Blog","description":"Get insider info from Esri product teams","publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization","name":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","width":400,"height":400,"caption":"Esri"},"image":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/esrigis\/","https:\/\/x.com\/ESRI","https:\/\/www.linkedin.com\/company\/5311\/"]},{"@type":"Person","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/5e8200af39ef9d178ccabb08822d96cd","name":"Rene Rubalcava","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/03\/ReneRubalcava-213x200.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/03\/ReneRubalcava-213x200.png","caption":"Rene Rubalcava"},"description":"SoftWhere Developer, blogger, author, geodev, and connoisseur of programming languages and JavaScript frameworks. I blog at https:\/\/odoe.net and post videos at https:\/\/www.youtube.com\/c\/renerubalcava I write code, sometimes it even works.","sameAs":["http:\/\/odoe.net\/","https:\/\/www.facebook.com\/odoenetgeo\/","https:\/\/www.linkedin.com\/in\/renerubalcava","https:\/\/x.com\/odoenet"],"url":"https:\/\/www.esri.com\/arcgis-blog\/author\/r-rubalcava"}]}},"text_date":"June 21, 2018","author_name":"Multiple Authors","author_page":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/introducing-a-cli-for-the-arcgis-api-for-javascript","custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/06\/arcgis-cli-banner.jpg","primary_product":"ArcGIS Maps SDK for JavaScript","tag_data":[{"term_id":96582,"name":"ArcGIS API for JavaScript","slug":"arcgis-api-for-javascript","term_group":0,"term_taxonomy_id":96582,"taxonomy":"post_tag","description":"","parent":0,"count":58,"filter":"raw"},{"term_id":115282,"name":"cli","slug":"cli","term_group":0,"term_taxonomy_id":115282,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":27491,"name":"jsapi4","slug":"jsapi4","term_group":0,"term_taxonomy_id":27491,"taxonomy":"post_tag","description":"","parent":0,"count":111,"filter":"raw"},{"term_id":34861,"name":"TypeScript","slug":"typescript","term_group":0,"term_taxonomy_id":34861,"taxonomy":"post_tag","description":"","parent":0,"count":6,"filter":"raw"},{"term_id":36161,"name":"Web Development","slug":"web-development","term_group":0,"term_taxonomy_id":36161,"taxonomy":"post_tag","description":"","parent":0,"count":19,"filter":"raw"}],"category_data":[{"term_id":22941,"name":"Mapping","slug":"mapping","term_group":0,"term_taxonomy_id":22941,"taxonomy":"category","description":"","parent":0,"count":2683,"filter":"raw"}],"product_data":[{"term_id":36831,"name":"ArcGIS Maps SDK for JavaScript","slug":"js-api-arcgis","term_group":0,"term_taxonomy_id":36831,"taxonomy":"product","description":"","parent":36601,"count":361,"filter":"raw"},{"term_id":36601,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":36601,"taxonomy":"product","description":"","parent":0,"count":761,"filter":"raw"}],"primary_product_link":"https:\/\/www.esri.com\/arcgis-blog\/?s=#&products=js-api-arcgis","_links":{"self":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/195412","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/users\/7531"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=195412"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/195412\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=195412"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=195412"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=195412"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=195412"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=195412"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}