{"id":16266457,"url":"https://github.com/dword-design/nuxt-route-meta","last_synced_at":"2025-03-15T11:31:46.470Z","repository":{"id":41183886,"uuid":"288747584","full_name":"dword-design/nuxt-route-meta","owner":"dword-design","description":"Adds Nuxt page data to route meta at build time. Also supports TypeScript.","archived":false,"fork":false,"pushed_at":"2024-05-01T12:33:04.000Z","size":3297,"stargazers_count":43,"open_issues_count":2,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-05-01T15:33:46.170Z","etag":null,"topics":["auth","authentication","frontend","javascript","meta-data","node","nodejs","npm","npm-package","nuxt","nuxt-module","nuxtjs","nuxtjs-module","page","pages","route","router","vue","vue-router","webdevelopment"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dword-design.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"custom":["buymeacoffee.com/dword","paypal.me/SebastianLandwehr"],"github":"dword-design","patreon":"dworddesign"}},"created_at":"2020-08-19T14:02:24.000Z","updated_at":"2024-06-15T17:20:22.119Z","dependencies_parsed_at":"2023-12-22T13:03:50.624Z","dependency_job_id":"295b2361-8ef7-480d-ab0e-d909ae963bf4","html_url":"https://github.com/dword-design/nuxt-route-meta","commit_stats":{"total_commits":203,"total_committers":11,"mean_commits":"18.454545454545453","dds":0.6945812807881773,"last_synced_commit":"9380e40f80014a17a5fc2e5dc0ed540a220ca60a"},"previous_names":[],"tags_count":56,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dword-design%2Fnuxt-route-meta","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dword-design%2Fnuxt-route-meta/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dword-design%2Fnuxt-route-meta/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dword-design%2Fnuxt-route-meta/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dword-design","download_url":"https://codeload.github.com/dword-design/nuxt-route-meta/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243724966,"owners_count":20337655,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["auth","authentication","frontend","javascript","meta-data","node","nodejs","npm","npm-package","nuxt","nuxt-module","nuxtjs","nuxtjs-module","page","pages","route","router","vue","vue-router","webdevelopment"],"created_at":"2024-10-10T17:41:12.439Z","updated_at":"2025-03-15T11:31:46.080Z","avatar_url":"https://github.com/dword-design.png","language":"JavaScript","funding_links":["buymeacoffee.com/dword","paypal.me/SebastianLandwehr","https://github.com/sponsors/dword-design","https://patreon.com/dworddesign","https://www.buymeacoffee.com/dword","https://paypal.me/SebastianLandwehr","https://www.patreon.com/dworddesign"],"categories":[],"sub_categories":[],"readme":"\u003c!-- TITLE/ --\u003e\n# nuxt-route-meta\n\u003c!-- /TITLE --\u003e\n\n\u003c!-- BADGES/ --\u003e\n  \u003cp\u003e\n    \u003ca href=\"https://npmjs.org/package/nuxt-route-meta\"\u003e\n      \u003cimg\n        src=\"https://img.shields.io/npm/v/nuxt-route-meta.svg\"\n        alt=\"npm version\"\n      \u003e\n    \u003c/a\u003e\u003cimg src=\"https://img.shields.io/badge/os-linux%20%7C%C2%A0macos%20%7C%C2%A0windows-blue\" alt=\"Linux macOS Windows compatible\"\u003e\u003ca href=\"https://github.com/dword-design/nuxt-route-meta/actions\"\u003e\n      \u003cimg\n        src=\"https://github.com/dword-design/nuxt-route-meta/workflows/build/badge.svg\"\n        alt=\"Build status\"\n      \u003e\n    \u003c/a\u003e\u003ca href=\"https://codecov.io/gh/dword-design/nuxt-route-meta\"\u003e\n      \u003cimg\n        src=\"https://codecov.io/gh/dword-design/nuxt-route-meta/branch/master/graph/badge.svg\"\n        alt=\"Coverage status\"\n      \u003e\n    \u003c/a\u003e\u003ca href=\"https://david-dm.org/dword-design/nuxt-route-meta\"\u003e\n      \u003cimg src=\"https://img.shields.io/david/dword-design/nuxt-route-meta\" alt=\"Dependency status\"\u003e\n    \u003c/a\u003e\u003cimg src=\"https://img.shields.io/badge/renovate-enabled-brightgreen\" alt=\"Renovate enabled\"\u003e\u003cbr/\u003e\u003ca href=\"https://gitpod.io/#https://github.com/dword-design/nuxt-route-meta\"\u003e\n      \u003cimg\n        src=\"https://gitpod.io/button/open-in-gitpod.svg\"\n        alt=\"Open in Gitpod\"\n        width=\"114\"\n      \u003e\n    \u003c/a\u003e\u003ca href=\"https://www.buymeacoffee.com/dword\"\u003e\n      \u003cimg\n        src=\"https://www.buymeacoffee.com/assets/img/guidelines/download-assets-sm-2.svg\"\n        alt=\"Buy Me a Coffee\"\n        width=\"114\"\n      \u003e\n    \u003c/a\u003e\u003ca href=\"https://paypal.me/SebastianLandwehr\"\u003e\n      \u003cimg\n        src=\"https://sebastianlandwehr.com/images/paypal.svg\"\n        alt=\"PayPal\"\n        width=\"163\"\n      \u003e\n    \u003c/a\u003e\u003ca href=\"https://www.patreon.com/dworddesign\"\u003e\n      \u003cimg\n        src=\"https://sebastianlandwehr.com/images/patreon.svg\"\n        alt=\"Patreon\"\n        width=\"163\"\n      \u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\u003c!-- /BADGES --\u003e\n\n\u003c!-- DESCRIPTION/ --\u003e\nAdds Nuxt page data to route meta at build time. Also supports TypeScript.\n\u003c!-- /DESCRIPTION --\u003e\n\nNuxt pages have a `meta` property that allows to define meta data. These can be accessed in middlewares via `route.meta` at runtime. What does not work however is to access the meta data at build time in the routes object itself. This is needed when postprocessing routes via [extendRoutes](https://nuxtjs.org/docs/2.x/configuration-glossary/configuration-router) (Nuxt 2), [pages:extend](https://nuxt.com/docs/guide/recipes/custom-routing#pages-hook) (Nuxt 3), [extendPages](https://nuxt.com/docs/api/kit/pages#extendpages) or the [@nuxtjs/sitemap](https://www.npmjs.com/package/@nuxtjs/sitemap) module. This module fills this gap by parsing the page files, extracting the meta data, and writing them to the `meta` field of each route corresponding to the page.\n\nℹ️ **Note that this module can only extract static data from the pages at build time. It will not work with dynamic data depending on `this`. In case you have an idea how to improve that, feel free to open up an issue or pull request.**\n\n\u003c!-- INSTALL/ --\u003e\n## Install\n\n```bash\n# npm\n$ npx nuxi module add nuxt-route-meta\n\n# Yarn\n$ yarn nuxi module add nuxt-route-meta\n```\n\u003c!-- /INSTALL --\u003e\n\n## Usage\n\nAdd the module to your `nuxt.config.js`:\n\n```js\nexport default {\n  modules: [\n    'nuxt-route-meta',\n  ]\n}\n```\n\nAdd some properties to your pages:\n\n```html\n\u003ctemplate\u003e\n  \u003cdiv\u003eHello world\u003c/div\u003e\n\u003c/template\u003e\n```\n\n```js\n\u003cscript\u003e\nexport default {\n  auth: true,\n  meta: {\n    theme: 'water',\n  },\n}\n\u003c/script\u003e\n```\n\nThat's it! Now you can access the meta data in `route.meta` from anywhere as you know it from [vue-router](https://www.npmjs.com/package/vue-router). The module takes all properties that all properties that are not functions, and the meta property itself is merged into the result. So `route.meta` from the example above is `{ auth: true, theme: 'water' }`.\n\nHere is an example to use it inside `nuxt.hook('pages:extend')` in a module:\n\n```js\nexport default defineNuxtModule((options, nuxt) =\u003e\n  nuxt.hook('pages:extend', routes =\u003e\n    for (const route of routes) {\n      if (route.meta.auth) {\n        // do something with auth routes\n      }\n    }\n  )\n)\n```\n\n## Composition API\n\n```js\n\u003cscript setup\u003e\ndefinePageMeta({\n  auth: true,\n})\n\u003c/script\u003e\n```\n\n## TypeScript\n\nThe module has built-in support for TypeScript.\n\n```js\n\u003cscript lang=\"ts\"\u003e\nexport default defineComponent({\n  auth: true,\n  meta: {\n    theme: 'water',\n  },\n})\n\u003c/script\u003e\n```\n\n\u003c!-- LICENSE/ --\u003e\n## Contribute\n\nAre you missing something or want to contribute? Feel free to file an [issue](https://github.com/dword-design/nuxt-route-meta/issues) or a [pull request](https://github.com/dword-design/nuxt-route-meta/pulls)! ⚙️\n\n## Support\n\nHey, I am Sebastian Landwehr, a freelance web developer, and I love developing web apps and open source packages. If you want to support me so that I can keep packages up to date and build more helpful tools, you can donate here:\n\n\u003cp\u003e\n  \u003ca href=\"https://www.buymeacoffee.com/dword\"\u003e\n    \u003cimg\n      src=\"https://www.buymeacoffee.com/assets/img/guidelines/download-assets-sm-2.svg\"\n      alt=\"Buy Me a Coffee\"\n      width=\"114\"\n    \u003e\n  \u003c/a\u003e\u0026nbsp;If you want to send me a one time donation. The coffee is pretty good 😊.\u003cbr/\u003e\n  \u003ca href=\"https://paypal.me/SebastianLandwehr\"\u003e\n    \u003cimg\n      src=\"https://sebastianlandwehr.com/images/paypal.svg\"\n      alt=\"PayPal\"\n      width=\"163\"\n    \u003e\n  \u003c/a\u003e\u0026nbsp;Also for one time donations if you like PayPal.\u003cbr/\u003e\n  \u003ca href=\"https://www.patreon.com/dworddesign\"\u003e\n    \u003cimg\n      src=\"https://sebastianlandwehr.com/images/patreon.svg\"\n      alt=\"Patreon\"\n      width=\"163\"\n    \u003e\n  \u003c/a\u003e\u0026nbsp;Here you can support me regularly, which is great so I can steadily work on projects.\n\u003c/p\u003e\n\nThanks a lot for your support! ❤️\n\n## See also\n\n* [nuxt-mail](https://github.com/dword-design/nuxt-mail): Adds email sending capability to a Nuxt.js app. Adds a server route, an injected variable, and uses nodemailer to send emails.\n* [nuxt-modernizr](https://github.com/dword-design/nuxt-modernizr): Adds a Modernizr build to your Nuxt.js app.\n* [nuxt-mermaid-string](https://github.com/dword-design/nuxt-mermaid-string): Embed a Mermaid diagram in a Nuxt.js app by providing its diagram string.\n* [nuxt-content-git](https://github.com/dword-design/nuxt-content-git): Additional module for @nuxt/content that replaces or adds createdAt and updatedAt dates based on the git history.\n* [nuxt-babel-runtime](https://github.com/dword-design/nuxt-babel-runtime): Nuxt CLI that supports babel. Inspired by @nuxt/typescript-runtime.\n\n## License\n\n[MIT License](https://opensource.org/license/mit/) © [Sebastian Landwehr](https://sebastianlandwehr.com)\n\u003c!-- /LICENSE --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdword-design%2Fnuxt-route-meta","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdword-design%2Fnuxt-route-meta","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdword-design%2Fnuxt-route-meta/lists"}