-
-
Notifications
You must be signed in to change notification settings - Fork 21
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
38 changed files
with
4,457 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
--- | ||
title: îles | ||
icon: noto:desert-island | ||
description: Setup Schema.org with your îles app. | ||
--- | ||
|
||
## Install | ||
|
||
::code-group | ||
|
||
```bash [yarn] | ||
yarn add -D @vueuse/schema-org-vite | ||
``` | ||
|
||
```bash [npm] | ||
npm install -D @vueuse/schema-org-vite | ||
``` | ||
|
||
```bash [pnpm] | ||
pnpm add -D @vueuse/schema-org-vite | ||
``` | ||
|
||
:: | ||
|
||
|
||
## Setup Module | ||
|
||
### 1. Add Module | ||
|
||
Start by adding in the îles Schema.org module which handles aliasing and component auto-imports. | ||
|
||
```ts [iles.config.ts] | ||
import { defineConfig } from 'iles' | ||
import { schemaOrgIles } from '@vueuse/schema-org-vite/iles-module' | ||
|
||
export default defineConfig({ | ||
siteUrl: 'https://iles-docs.netlify.app/', | ||
modules: [ | ||
schemaOrgIles({ | ||
// select which types you'd like | ||
full: false, | ||
}), | ||
], | ||
}) | ||
``` | ||
|
||
Note: Make sure you set your `siteUrl` if you haven't already. | ||
|
||
### 2. Install Vue Plugin | ||
|
||
Add the vue plugin in your `app.ts` file. | ||
|
||
```ts [app.ts] | ||
import { defineApp } from 'iles' | ||
import { installSchemaOrg } from '@vueuse/schema-org-vite/iles-app' | ||
|
||
export default defineApp({ | ||
async enhanceApp(ctx) { | ||
installSchemaOrg(ctx, { | ||
// any default meta | ||
}) | ||
}, | ||
}) | ||
|
||
``` | ||
|
||
See the [User Config page](/guide/guides/user-config) for all options you can pass. | ||
|
||
### 3. Add Site Schema.org | ||
|
||
Within your `layouts/default.vue` file you can add your site-wide schema. | ||
|
||
::code-group | ||
|
||
```vue [Composition API] | ||
<script lang="ts" setup> | ||
import { defineWebPage, defineWebSite, useSchemaOrg } from '@vueuse/schema-org/runtime' | ||
useSchemaOrg([ | ||
defineWebPage(), | ||
defineWebSite({ | ||
name: 'test', | ||
}), | ||
]) | ||
</script> | ||
``` | ||
|
||
```vue [Component API] | ||
<template> | ||
<!-- @todo Select Identity: https://vue-schema-org.netlify.app/guide/guides/identity --> | ||
<SchemaOrgWebPage /> | ||
<SchemaOrgWebSite name="îles" /> | ||
</template> | ||
``` | ||
|
||
:: | ||
|
||
### Next Steps | ||
|
||
Your îles app is now serving basic Schema.org, congrats! 🎉 | ||
|
||
The next steps are: | ||
1. Choose an [Identity](/guide/guides/identity) | ||
2. Set up your pages for [Runtime Inferences](/guide/getting-started/how-it-works#runtime-inferences) | ||
3. Then feel free to follow some recipes: | ||
|
||
- [Breadcrumbs](/guide/recipes/breadcrumbs) | ||
- [FAQ Page](/guide/recipes/faq) | ||
- [Site Search](/guide/recipes/site-search) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
import type { UserConfig } from '@vueuse/schema-org' | ||
import { createSchemaOrg, resolveUserConfig } from '@vueuse/schema-org' | ||
import type { EnhanceAppContext } from 'iles' | ||
|
||
export function installSchemaOrg(ctx: EnhanceAppContext, config: UserConfig) { | ||
if (!config.canonicalHost) | ||
config.canonicalHost = ctx.site.url | ||
const resolvedConfig = resolveUserConfig(config) | ||
|
||
const client = createSchemaOrg({ | ||
position: 'head', | ||
updateHead(fn) { | ||
ctx.head.addHeadObjs(fn) | ||
if (typeof document !== 'undefined') | ||
ctx.head.updateDOM() | ||
}, | ||
meta() { | ||
const inferredMeta: Record<string, any> = {} | ||
|
||
const tags = ctx.head.headTags?.reverse() | ||
if (tags) { | ||
const headTag = tags.filter(t => t.tag === 'title' && !!t.props.children) | ||
if (headTag.length) | ||
inferredMeta.title = headTag[0].props.children | ||
const descTag = tags.filter(t => t.tag === 'meta' && t.props.name === 'description' && !!t.props.content) | ||
if (descTag.length) | ||
inferredMeta.description = descTag[0].props.content | ||
const imageTag = tags.filter(t => t.tag === 'meta' && t.props.property === 'og:image' && !!t.props.content) | ||
if (imageTag.length) | ||
inferredMeta.image = imageTag[0].props.content | ||
} | ||
|
||
return { | ||
path: ctx.router?.currentRoute.value.path || '/', | ||
...inferredMeta, | ||
...resolvedConfig.meta, | ||
...ctx.meta, | ||
...ctx.frontmatter, | ||
...ctx.router?.currentRoute.value.meta || {}, | ||
} | ||
}, | ||
}) | ||
|
||
ctx.app.use(client) | ||
|
||
if (typeof document === 'undefined') { | ||
client.generateSchema() | ||
client.setupDOM() | ||
return | ||
} | ||
|
||
ctx.router.afterEach(() => { | ||
client.generateSchema() | ||
client.setupDOM() | ||
}) | ||
return client | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
import { SchemaOrgResolver } from '@vueuse/schema-org' | ||
import type { SchemaOrgPluginOptions } from '@vueuse/schema-org' | ||
import type { IlesModule } from 'iles' | ||
import type { UserConfig as IlesUserConfig } from 'iles/types/shared' | ||
import { SchemaOrg } from '.' | ||
|
||
export function schemaOrgIles(pluginOptions: SchemaOrgPluginOptions) { | ||
return <IlesModule> { | ||
name: '@vueuse-schema-org/schema-org-iles', | ||
components: { | ||
resolvers: [ | ||
SchemaOrgResolver(), | ||
], | ||
}, | ||
config(config: IlesUserConfig) { | ||
config.vite = config.vite || {} | ||
// config.vite.optimizeDeps = config.vite.optimizeDeps || {} | ||
// config.vite.optimizeDeps.exclude = config.vite.optimizeDeps.exclude || [] | ||
// config.vite.optimizeDeps.exclude.push(...['webpack-virtual-modules', 'unplugin', '@vueuse/schema-org/vite', '@vueuse/schema-org']) | ||
config.vite.plugins = config.vite.plugins || [] | ||
config.vite.plugins.push(SchemaOrg({ | ||
// use simple types | ||
full: false, | ||
// write type alias to tsconfig.json | ||
dts: true, | ||
// Note: iles will already strip out all javascript so we don't need to do it | ||
mock: false, | ||
...pluginOptions, | ||
})) | ||
}, | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
# Logs | ||
logs | ||
*.log | ||
npm-debug.log* | ||
yarn-debug.log* | ||
yarn-error.log* | ||
pnpm-debug.log* | ||
lerna-debug.log* | ||
|
||
node_modules | ||
.DS_Store | ||
dist | ||
dist-ssr | ||
*.local | ||
|
||
/cypress/videos/ | ||
/cypress/screenshots/ | ||
|
||
# Editor directories and files | ||
.vscode | ||
!.vscode/extensions.json | ||
.idea | ||
*.suo | ||
*.ntvs* | ||
*.njsproj | ||
*.sln | ||
*.sw? | ||
|
||
.iles-ssg-temp/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
ignore-workspace-root-check=true | ||
shamefully-hoist=true |
Oops, something went wrong.