{
    "componentChunkName": "component---src-pages-blog-post-tsx",
    "path": "/blog/2021-09-02/feature-spotlight-ide-component-validation",
    "result": {"data":{"site":{"siteMetadata":{"siteUrl":"https://www.architect.io"}},"allMdx":{"edges":[{"node":{"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"Feature Spotlight: Validating component schemas in your IDE\",\n  \"keywords\": \"json schema store yaml component validation command cli\",\n  \"slug\": \"feature-spotlight-ide-component-validation\",\n  \"date\": \"2021-09-02T00:00:00.000Z\",\n  \"author\": \"Brahm Lower\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"We're excited today to announce improvements in our tooling for validating Component files,\\nwhich includes JSON Schema Store support as well as a new \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/architect-team/architect-cli#architect-validate-configs_or_components\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"a\"\n  }, \"validate\"), \" command for the CLI\"), \"!\"), mdx(\"h2\", {\n    \"id\": \"json-schema-store-support\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, \"JSON Schema Store Support\", mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#json-schema-store-support\",\n    \"aria-label\": \"json schema store support permalink\",\n    \"className\": \"anchor after\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  })))), mdx(\"p\", null, \"Your editor can automatically show reference docs and validate your architect component files,\\ngiving a more streamlined developer experience while reducing context switching. There is varying\\nsupport for the JSON Schema Store across editors, so if your editor doesn't have built-in support\\nyou may need to download an extension.\"), mdx(\"h3\", {\n    \"id\": \"intellij-by-jetbrains\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, \"IntelliJ by JetBrains\", mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#intellij-by-jetbrains\",\n    \"aria-label\": \"intellij by jetbrains permalink\",\n    \"className\": \"anchor after\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  })))), mdx(\"p\", null, \"IntelliJ has built-in support for JSON Schema Store, but is disabled by default and needs to be manually enabled.\\nIf you haven't already enabled this feature, you can do so by following the \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://www.jetbrains.com/help/idea/json.html#ws_json_using_schemas\"\n  }, \"IntelliJ JSON\\ndocumentation\"), \".\"), mdx(\"h3\", {\n    \"id\": \"vscode-by-microsoft\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, \"VSCode by Microsoft\", mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#vscode-by-microsoft\",\n    \"aria-label\": \"vscode by microsoft permalink\",\n    \"className\": \"anchor after\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  })))), mdx(\"p\", null, \"The \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml\"\n  }, \"YAML extension by Red Hat\"), \" for VSCode provides great\\nsupport for the JSON schema store by automatically fetching schema from the store and providing validation tooltips for any matching yaml files.\\nIf you prefer to avoid extensions, VSCode does have built-in support for the schema store, but \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://code.visualstudio.com/docs/languages/json#_mapping-in-the-json\"\n  }, \"requires some manual configuration\"), \".\"), mdx(\"p\", null, \"This image is an example of the json schema being used to validate my architect file in VSCode. At the top it shows which schema is used for\\nvalidating the file, and is highlighting a mistake I've made in my cpu setting in the service debug block.\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"783px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/73de23e3b9d04626708614da3fa0ab0d/e51a6/vscode-syntax-highlighting.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"49.199999999999996%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsTAAALEwEAmpwYAAABMUlEQVQoz52S207DMBBE8yG08S1eX9OkrdPStEjtI+Kp/P+3DLJpAwiQAg9HXkvr3RmNq+A9ttuEwzhilxK26w2O4wG7YYBzDsYYWGsLub6T71IqMMbAOZ+oOGOQ2sD6Fn2w6IPDyhmso4duGiilviClnGohxG0gK2emyg3aONh0ArUbLGuGRc3wsFhiWdeo63pq/onP6opCmbdJAYpruHSC7xPa4BEtwRuCVtkW//bwN4pCpQk6dFDaFBtKMCjBCyLbKSrnUWndwIQVwvkV8XwFpTN4GD6IO4g/UBlDIB9hjy+IlytouIC3e4j28V9URAaNktChRzccEbUsqQnOIQW/WWGzqYgISkk0xmH19Iy0P6HzBp23cKSnJGcPvH/anHYOhkKHYAmtew9obrr3lN8A9qYh3qSI0UQAAAAASUVORK5CYII=')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"schema validation via editor\",\n    \"title\": \"schema validation via editor\",\n    \"src\": \"/static/73de23e3b9d04626708614da3fa0ab0d/e51a6/vscode-syntax-highlighting.png\",\n    \"srcSet\": [\"/static/73de23e3b9d04626708614da3fa0ab0d/63868/vscode-syntax-highlighting.png 250w\", \"/static/73de23e3b9d04626708614da3fa0ab0d/0b533/vscode-syntax-highlighting.png 500w\", \"/static/73de23e3b9d04626708614da3fa0ab0d/e51a6/vscode-syntax-highlighting.png 783w\"],\n    \"sizes\": \"(max-width: 783px) 100vw, 783px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\",\n    \"decoding\": \"async\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"h3\", {\n    \"id\": \"component-filename-patterns\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, \"Component filename patterns\", mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#component-filename-patterns\",\n    \"aria-label\": \"component filename patterns permalink\",\n    \"className\": \"anchor after\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  })))), mdx(\"p\", null, \"The schema applies to all \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"architect.yml\"), \" and \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"*.architect.yml\"), \" files, so most of your component files\\nwill be validated by the schema automatically. Component files with names other than \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"architect.yml\"), \" will\\nneed to be renamed for the schema validations to be applied by your editor.\"), mdx(\"p\", null, \"For example you might have two components for a repo named as follows:\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"text\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-text\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-text\"\n  }, \"architect.yml\\narchitect-worker.yml\"))), mdx(\"p\", null, \"The first architect file will receive validation as expected, but the second won't. This can be remedied by renaming it\\nto match the pattern \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"*.architect.yml\"), \":\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"text\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-text\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-text\"\n  }, \"architect.yml\\nworker.architect.yml\"))), mdx(\"h2\", {\n    \"id\": \"updated-cli-validation\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, \"Updated CLI Validation\", mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#updated-cli-validation\",\n    \"aria-label\": \"updated cli validation permalink\",\n    \"className\": \"anchor after\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  })))), mdx(\"p\", null, \"The \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"validate\"), \" command has been added to the CLI for running validations locally. Prior to this, validations were run\\nas part of the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"register\"), \" command, but that wasn't helpful in cases where you wanted to check your work without\\npushing the component to Architect.\"), mdx(\"p\", null, \"The following example shows the Architect CLI catching a mistake I've made in my component file. The new validation messages show\\nexactly where the problem is in the file and what needs to be fixed.\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"699px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/76f5cbdd2ecdec172e2a723a78f3d15c/3fe45/cli-validation-errors.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"27.599999999999998%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsTAAALEwEAmpwYAAABG0lEQVQY012Q207jQBBE/R2w8XR3JnGci8f2MB5jeYUiJNjl///nIJuAIh6OqqofWtVd/BtH3qaJa85MOZNTou86hmGgi5FhHLmEQNO2tH2/6lNKhBCIMdJ1Hd57RARVpZhVGUWYvWfe7clmvKiSRDg7x8k5GhFOIhyd4yxCVZa4sqS86feydWF9OKB+h7v+R+ZXpE/opcWqmp0q3uxLVdneITfcgshKKUJRVXuc31GmCT0cOW+3nLwnbI2Dylc2ozajMeNixnHJqqu2t9lCMKNY7v/z+MjDMPOQ/+KaDt1XSH3CVTWy2WDOYSJr0/u2/i5/+2KaJsZxJF1fSe8fxJcroe95en4mDpmcM32MNCGwWf61nCryg/vlPwEuZbAeEetQwwAAAABJRU5ErkJggg==')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"schema validation via CLI\",\n    \"title\": \"schema validation via CLI\",\n    \"src\": \"/static/76f5cbdd2ecdec172e2a723a78f3d15c/3fe45/cli-validation-errors.png\",\n    \"srcSet\": [\"/static/76f5cbdd2ecdec172e2a723a78f3d15c/63868/cli-validation-errors.png 250w\", \"/static/76f5cbdd2ecdec172e2a723a78f3d15c/0b533/cli-validation-errors.png 500w\", \"/static/76f5cbdd2ecdec172e2a723a78f3d15c/3fe45/cli-validation-errors.png 699w\"],\n    \"sizes\": \"(max-width: 699px) 100vw, 699px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\",\n    \"decoding\": \"async\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"p\", null, \"Once the issue is resolved, validation will confirm that the file is structured properly and the component can be registered.\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"705px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/d4e47939a18bbeec30b4fdc1e5c604ed/d2cbc/cli-validation-successful.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"6.800000000000001%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAABCAYAAADeko4lAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAT0lEQVQI1x3FbQpAMACAYSfRVjKFtI+GWbYlXMD9r/KKH09PZR6PPXbclTEl4u7MFDw6BXTZcGdiiB61WtpZ/9T3Yui8pjEjda+QUiKF4AUg8h/hvllX5gAAAABJRU5ErkJggg==')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"schema validation successful\",\n    \"title\": \"schema validation successful\",\n    \"src\": \"/static/d4e47939a18bbeec30b4fdc1e5c604ed/d2cbc/cli-validation-successful.png\",\n    \"srcSet\": [\"/static/d4e47939a18bbeec30b4fdc1e5c604ed/63868/cli-validation-successful.png 250w\", \"/static/d4e47939a18bbeec30b4fdc1e5c604ed/0b533/cli-validation-successful.png 500w\", \"/static/d4e47939a18bbeec30b4fdc1e5c604ed/d2cbc/cli-validation-successful.png 705w\"],\n    \"sizes\": \"(max-width: 705px) 100vw, 705px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\",\n    \"decoding\": \"async\"\n  }), \"\\n  \"), \"\\n    \")));\n}\n;\nMDXContent.isMDXComponent = true;","excerpt":"We're excited today to announce improvements in our tooling for validating Component files,\nwhich includes JSON Schema Store support as well as a new  validate  command for the CLI ! JSON Schema Store…","tableOfContents":{"items":[{"url":"#json-schema-store-support","title":"JSON Schema Store Support","items":[{"url":"#intellij-by-jetbrains","title":"IntelliJ by JetBrains"},{"url":"#vscode-by-microsoft","title":"VSCode by Microsoft"},{"url":"#component-filename-patterns","title":"Component filename patterns"}]},{"url":"#updated-cli-validation","title":"Updated CLI Validation"}]},"frontmatter":{"title":"Feature Spotlight: Validating component schemas in your IDE","description":null,"author":"Brahm Lower","date":"2021-09-02","image":null}},"next":null,"previous":null}]}},"pageContext":{"slug":"feature-spotlight-ide-component-validation"}},
    "staticQueryHashes": ["764694655"]}