nuxt-site-config 1.5.4 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module.json +1 -1
- package/dist/module.mjs +50 -4
- package/dist/runtime/nitro/middleware/init.mjs +30 -1
- package/dist/runtime/nitro/routes/{debug.mjs → __site-config__/debug.mjs} +1 -1
- package/dist/runtime/plugins/i18n.mjs +17 -3
- package/dist/runtime/types.d.ts +6 -1
- package/dist/runtime/types.mjs +0 -1
- package/dist/types.d.mts +3 -2
- package/dist/types.d.ts +3 -2
- package/package.json +10 -6
- /package/dist/runtime/nitro/routes/{debug.d.ts → __site-config__/debug.d.ts} +0 -0
package/dist/module.json
CHANGED
package/dist/module.mjs
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { useNuxt, createResolver, addTemplate, defineNuxtModule, useLogger, addImports, addComponent, addPlugin, hasNuxtModule, addServerHandler, addPrerenderRoutes, addServerPlugin } from '@nuxt/kit';
|
|
2
2
|
import { initSiteConfig, updateSiteConfig, getSiteConfigStack } from 'nuxt-site-config-kit';
|
|
3
3
|
import { relative } from 'pathe';
|
|
4
|
+
import { existsSync } from 'node:fs';
|
|
4
5
|
|
|
5
|
-
const version = "1.
|
|
6
|
+
const version = "1.6.0";
|
|
6
7
|
|
|
7
8
|
function extendTypes(module, template) {
|
|
8
9
|
const nuxt = useNuxt();
|
|
@@ -23,6 +24,48 @@ export {}
|
|
|
23
24
|
});
|
|
24
25
|
}
|
|
25
26
|
|
|
27
|
+
const DEVTOOLS_UI_ROUTE = "/__nuxt-site-config";
|
|
28
|
+
const DEVTOOLS_UI_LOCAL_PORT = 3030;
|
|
29
|
+
function setupDevToolsUI(resolve, nuxt = useNuxt()) {
|
|
30
|
+
const clientPath = resolve("./client");
|
|
31
|
+
const isProductionBuild = existsSync(clientPath);
|
|
32
|
+
if (isProductionBuild) {
|
|
33
|
+
nuxt.hook("vite:serverCreated", async (server) => {
|
|
34
|
+
const sirv = await import('sirv').then((r) => r.default || r);
|
|
35
|
+
server.middlewares.use(
|
|
36
|
+
DEVTOOLS_UI_ROUTE,
|
|
37
|
+
sirv(clientPath, { dev: true, single: true })
|
|
38
|
+
);
|
|
39
|
+
});
|
|
40
|
+
} else {
|
|
41
|
+
nuxt.hook("vite:extendConfig", (config) => {
|
|
42
|
+
config.server = config.server || {};
|
|
43
|
+
config.server.proxy = config.server.proxy || {};
|
|
44
|
+
config.server.proxy[DEVTOOLS_UI_ROUTE] = {
|
|
45
|
+
target: `http://localhost:${DEVTOOLS_UI_LOCAL_PORT}${DEVTOOLS_UI_ROUTE}`,
|
|
46
|
+
changeOrigin: true,
|
|
47
|
+
followRedirects: true,
|
|
48
|
+
rewrite: (path) => path.replace(DEVTOOLS_UI_ROUTE, "")
|
|
49
|
+
};
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
nuxt.hook("devtools:customTabs", (tabs) => {
|
|
53
|
+
tabs.push({
|
|
54
|
+
// unique identifier
|
|
55
|
+
name: "nuxt-simple-sitemap",
|
|
56
|
+
// title to display in the tab
|
|
57
|
+
title: "Site Config",
|
|
58
|
+
// any icon from Iconify, or a URL to an image
|
|
59
|
+
icon: "carbon:settings-check",
|
|
60
|
+
// iframe view
|
|
61
|
+
view: {
|
|
62
|
+
type: "iframe",
|
|
63
|
+
src: DEVTOOLS_UI_ROUTE
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
|
|
26
69
|
const module = defineNuxtModule({
|
|
27
70
|
meta: {
|
|
28
71
|
name: "nuxt-site-config",
|
|
@@ -175,11 +218,14 @@ declare module '@nuxt/schema' {
|
|
|
175
218
|
});
|
|
176
219
|
if (config.debug) {
|
|
177
220
|
addServerHandler({
|
|
178
|
-
route: "/
|
|
179
|
-
handler: resolve("./runtime/nitro/routes/debug")
|
|
221
|
+
route: "/__site-config__/debug.json",
|
|
222
|
+
handler: resolve("./runtime/nitro/routes/__site-config__/debug")
|
|
180
223
|
});
|
|
181
|
-
|
|
224
|
+
if (nuxt.options._generate)
|
|
225
|
+
addPrerenderRoutes("/__site-config__/debug.json");
|
|
182
226
|
}
|
|
227
|
+
if (nuxt.options.dev)
|
|
228
|
+
setupDevToolsUI(resolve);
|
|
183
229
|
addServerPlugin(resolve("./runtime/nitro/plugins/injectState"));
|
|
184
230
|
}
|
|
185
231
|
});
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
import { createSiteConfigStack } from "site-config-stack";
|
|
2
2
|
import { defineEventHandler, useAppConfig, useNitroOrigin, useRuntimeConfig } from "#imports";
|
|
3
|
+
function getEnv(config) {
|
|
4
|
+
const key = config.toUpperCase();
|
|
5
|
+
const env = import.meta.env || {};
|
|
6
|
+
const privateKey = `NUXT_SITE_${key}`;
|
|
7
|
+
const publicKey = `NUXT_PUBLIC_SITE_${key}`;
|
|
8
|
+
if (privateKey in env)
|
|
9
|
+
return env[privateKey];
|
|
10
|
+
if (publicKey in env)
|
|
11
|
+
return env[publicKey];
|
|
12
|
+
}
|
|
3
13
|
export default defineEventHandler((e) => {
|
|
4
14
|
const config = useRuntimeConfig()["nuxt-site-config"];
|
|
5
15
|
const siteConfig = e.context.siteConfig || createSiteConfigStack({
|
|
6
|
-
// @ts-expect-error untyped
|
|
7
16
|
debug: config.debug
|
|
8
17
|
});
|
|
9
18
|
if (siteConfig) {
|
|
@@ -15,6 +24,17 @@ export default defineEventHandler((e) => {
|
|
|
15
24
|
_priority: -4,
|
|
16
25
|
url: nitroOrigin
|
|
17
26
|
});
|
|
27
|
+
siteConfig.push({
|
|
28
|
+
_context: "runtimeEnv",
|
|
29
|
+
_priority: 0,
|
|
30
|
+
env: getEnv("Env"),
|
|
31
|
+
url: getEnv("Url"),
|
|
32
|
+
name: getEnv("Name"),
|
|
33
|
+
description: getEnv("Description"),
|
|
34
|
+
logo: getEnv("Image"),
|
|
35
|
+
defaultLocale: getEnv("Language"),
|
|
36
|
+
indexable: getEnv("Indexable")
|
|
37
|
+
});
|
|
18
38
|
const buildStack = config.stack || [];
|
|
19
39
|
buildStack.forEach((c) => siteConfig.push(c));
|
|
20
40
|
if (appConfig.site) {
|
|
@@ -30,6 +50,15 @@ export default defineEventHandler((e) => {
|
|
|
30
50
|
...e.context._nitro.routeRules.site
|
|
31
51
|
});
|
|
32
52
|
}
|
|
53
|
+
const curStack = siteConfig.get();
|
|
54
|
+
if (typeof curStack.indexable === "undefined") {
|
|
55
|
+
siteConfig.push({
|
|
56
|
+
_context: "computed-env",
|
|
57
|
+
_priority: -4,
|
|
58
|
+
// allow overriding from the module
|
|
59
|
+
indexable: curStack.env === "production"
|
|
60
|
+
});
|
|
61
|
+
}
|
|
33
62
|
}
|
|
34
63
|
e.context.siteConfig = siteConfig;
|
|
35
64
|
});
|
|
@@ -1,16 +1,30 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { parseURL } from "ufo";
|
|
2
|
+
import { computed, defineNuxtPlugin, updateSiteConfig, useSiteConfig } from "#imports";
|
|
2
3
|
export default defineNuxtPlugin({
|
|
3
4
|
name: "nuxt-site-config:i18n",
|
|
4
|
-
// @ts-expect-error todo fix upstream
|
|
5
5
|
enforce: 1,
|
|
6
6
|
// needs to come after i18n
|
|
7
7
|
setup(nuxtApp) {
|
|
8
8
|
const i18n = nuxtApp.$i18n;
|
|
9
9
|
if (!i18n)
|
|
10
10
|
return;
|
|
11
|
+
const currentUrl = useSiteConfig().url;
|
|
12
|
+
let i18nBaseUrl = false;
|
|
13
|
+
try {
|
|
14
|
+
const url = parseURL(i18n.baseUrl.value);
|
|
15
|
+
if (import.meta.dev && url.host) {
|
|
16
|
+
if (url.host.includes("localhost"))
|
|
17
|
+
console.warn(`[Nuxt Site Config] You have set an i18n baseUrl to \`${url.host}\`. This will not work in production. Please set a proper baseUrl in your i18n config.`);
|
|
18
|
+
else if (!currentUrl.includes(url.host))
|
|
19
|
+
console.warn(`[Nuxt Site Config] Your i18n baseUrl \`${url}\` doesn't match your site url. This can lead to unexpected behavior. Please set a matching baseUrl in your i18n config.`);
|
|
20
|
+
else
|
|
21
|
+
i18nBaseUrl = url.host;
|
|
22
|
+
}
|
|
23
|
+
} catch {
|
|
24
|
+
}
|
|
11
25
|
updateSiteConfig({
|
|
12
26
|
_context: "@nuxtjs/i18n",
|
|
13
|
-
url:
|
|
27
|
+
url: i18nBaseUrl || void 0,
|
|
14
28
|
currentLocale: i18n.locale,
|
|
15
29
|
description: computed(() => i18n.te("nuxtSiteConfig.description") ? i18n.t("nuxtSiteConfig.description") : void 0),
|
|
16
30
|
name: computed(() => i18n.te("nuxtSiteConfig.name") ? i18n.t("nuxtSiteConfig.name") : void 0)
|
package/dist/runtime/types.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
import type { SiteConfig, SiteConfigInput, SiteConfigStack } from 'site-config-stack';
|
|
2
2
|
export type NuxtSiteConfig = Omit<SiteConfig, 'url'> & Required<Pick<SiteConfig, 'url'>>;
|
|
3
|
-
export { SiteConfig, SiteConfigStack, SiteConfigInput };
|
|
3
|
+
export type { SiteConfig, SiteConfigStack, SiteConfigInput };
|
|
4
|
+
export interface ModuleRuntimeConfig {
|
|
5
|
+
debug?: boolean;
|
|
6
|
+
stack?: Partial<SiteConfigInput>[];
|
|
7
|
+
version: string;
|
|
8
|
+
}
|
package/dist/runtime/types.mjs
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/types.d.mts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
|
|
2
|
-
import { ModuleOptions, ModuleHooks, ModuleRuntimeConfig } from './module'
|
|
2
|
+
import type { ModuleOptions, ModuleHooks, ModuleRuntimeConfig } from './module'
|
|
3
|
+
|
|
3
4
|
|
|
4
5
|
declare module '@nuxt/schema' {
|
|
5
6
|
interface NuxtConfig { ['site']?: Partial<ModuleOptions> }
|
|
@@ -16,4 +17,4 @@ declare module 'nuxt/schema' {
|
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
|
|
19
|
-
export { ModuleHooks, ModuleOptions, ModuleRuntimeConfig, default } from './module'
|
|
20
|
+
export type { ModuleHooks, ModuleOptions, ModuleRuntimeConfig, default } from './module'
|
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
|
|
2
|
-
import { ModuleOptions, ModuleHooks, ModuleRuntimeConfig } from './module'
|
|
2
|
+
import type { ModuleOptions, ModuleHooks, ModuleRuntimeConfig } from './module'
|
|
3
|
+
|
|
3
4
|
|
|
4
5
|
declare module '@nuxt/schema' {
|
|
5
6
|
interface NuxtConfig { ['site']?: Partial<ModuleOptions> }
|
|
@@ -16,4 +17,4 @@ declare module 'nuxt/schema' {
|
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
|
|
19
|
-
export { ModuleHooks, ModuleOptions, ModuleRuntimeConfig, default } from './module'
|
|
20
|
+
export type { ModuleHooks, ModuleOptions, ModuleRuntimeConfig, default } from './module'
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nuxt-site-config",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.6.0",
|
|
5
5
|
"description": "Shared site configuration for Nuxt 3 modules.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"funding": "https://github.com/sponsors/harlan-zw",
|
|
@@ -26,12 +26,16 @@
|
|
|
26
26
|
"dist"
|
|
27
27
|
],
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@nuxt/kit": "^
|
|
30
|
-
"@nuxt/
|
|
29
|
+
"@nuxt/devtools-kit": "^1.0.2",
|
|
30
|
+
"@nuxt/devtools-ui-kit": "^1.0.2",
|
|
31
|
+
"@nuxt/kit": "^3.8.1",
|
|
32
|
+
"@nuxt/schema": "^3.8.1",
|
|
31
33
|
"pathe": "^1.1.1",
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
34
|
+
"shiki-es": "^0.14.0",
|
|
35
|
+
"sirv": "^2.0.3",
|
|
36
|
+
"ufo": "^1.3.2",
|
|
37
|
+
"site-config-stack": "1.6.0",
|
|
38
|
+
"nuxt-site-config-kit": "1.6.0"
|
|
35
39
|
},
|
|
36
40
|
"build": {
|
|
37
41
|
"externals": [
|
|
File without changes
|