Skip to content

Commit 50d623c

Browse files
authored
Merge pull request #13 from microcmsio/support-nuxt-3-5-0
環境変数がクライアントサイドで読み込まれない問題を修正
2 parents 5d5de20 + f5f9868 commit 50d623c

File tree

6 files changed

+1652
-1804
lines changed

6 files changed

+1652
-1804
lines changed

.tool-versions

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
nodejs 18.16.0

package.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,18 @@
4141
"prepublishOnly": "nuxi prepare playground && yarn lint && nuxt-module-build"
4242
},
4343
"dependencies": {
44-
"@nuxt/kit": "^3.2.0",
44+
"@nuxt/kit": "^3.5.3",
4545
"defu": "^6.1.2",
46-
"microcms-js-sdk": "^2.3.2"
46+
"microcms-js-sdk": "^2.5.0"
4747
},
4848
"devDependencies": {
4949
"@nuxt/eslint-config": "^0.1.1",
50-
"@nuxt/module-builder": "^0.2.1",
51-
"@nuxt/schema": "^3.2.3",
52-
"@nuxt/test-utils": "^3.2.3",
53-
"@types/node": "16.18.13",
54-
"eslint": "^8.35.0",
55-
"eslint-config-prettier": "^8.6.0",
56-
"nuxt": "^3.2.3"
50+
"@nuxt/module-builder": "^0.4.0",
51+
"@nuxt/schema": "^3.5.3",
52+
"@nuxt/test-utils": "^3.5.3",
53+
"@types/node": "^18.11.9",
54+
"eslint": "^8.42.0",
55+
"eslint-config-prettier": "^8.8.0",
56+
"nuxt": "^3.5.3"
5757
}
5858
}

src/module.ts

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,12 @@ export default defineNuxtModule<ModuleOptions>({
4040
nuxt.options.runtimeConfig.public.microCMS.serviceDomain ||
4141
nuxt.options.runtimeConfig.microCMS.serviceDomain;
4242

43-
if (nuxt.options.dev || options.target === 'all') {
44-
nuxt.options.runtimeConfig.public.microCMS = defu(
45-
nuxt.options.runtimeConfig.public.microCMS,
46-
nuxt.options.runtimeConfig.microCMS
47-
);
43+
nuxt.options.runtimeConfig.public.microCMS.apiKey =
44+
nuxt.options.runtimeConfig.public.microCMS.apiKey ||
45+
nuxt.options.runtimeConfig.microCMS.apiKey;
46+
47+
if (!nuxt.options.dev && options.target !== 'all') {
48+
nuxt.options.runtimeConfig.public.microCMS.apiKey = undefined;
4849
}
4950

5051
const { resolve } = createResolver(import.meta.url);
@@ -53,10 +54,3 @@ export default defineNuxtModule<ModuleOptions>({
5354
addImportsDir(resolve('./runtime/composables'));
5455
},
5556
});
56-
57-
declare module '@nuxt/schema' {
58-
interface RuntimeConfig {
59-
serviceDomain: string;
60-
apiKey: string;
61-
}
62-
}

src/runtime/composables/useMicroCMSGet.ts

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {
55
MicroCMSQueries,
66
} from 'microcms-js-sdk';
77
import { useFetch, useRuntimeConfig } from 'nuxt/app';
8-
import type { FetchOptions as _FetchOptions } from 'ofetch';
8+
import type { FetchError } from 'ofetch';
99
import { computed } from 'vue';
1010

1111
import { useMicroCMSUrl } from './useMicroCMSUrl';
@@ -31,13 +31,16 @@ type MicroCMSGetObjectArgs = {
3131
queries?: MicroCMSQueries;
3232
};
3333

34-
type FetchOptions = Omit<_FetchOptions<'json'>, 'baseURL' | 'query' | 'method'>;
34+
type FetchOptions<T extends unknown> = Omit<
35+
Parameters<typeof useFetch<T, FetchError, string, 'get'>>,
36+
'baseURL' | 'query' | 'method'
37+
>[1];
3538

3639
const method = 'GET';
3740

3841
const useMicroCMSGet = <T>(
3942
{ url, queries }: MicroCMSGetArgs,
40-
fetchOptions: FetchOptions = {}
43+
fetchOptions: FetchOptions<T> = {}
4144
) => {
4245
const baseURL = useMicroCMSUrl();
4346
const config = useRuntimeConfig();
@@ -52,12 +55,14 @@ const useMicroCMSGet = <T>(
5255
: undefined
5356
);
5457

55-
return useFetch<T>(url, {
58+
return useFetch<T, FetchError, string, 'get'>(url, {
5659
...fetchOptions,
5760
baseURL,
5861
query,
5962
headers: {
60-
'X-MICROCMS-API-KEY': config.microCMS?.apiKey,
63+
'X-MICROCMS-API-KEY': config.microCMS
64+
? config.microCMS.apiKey
65+
: config.public.microCMS.apiKey,
6166
...fetchOptions.headers,
6267
},
6368
method,
@@ -66,7 +71,7 @@ const useMicroCMSGet = <T>(
6671

6772
export const useMicroCMSGetList = <T>(
6873
{ endpoint, queries }: MicroCMSGetListArgs,
69-
fetchOptions: FetchOptions = {}
74+
fetchOptions: FetchOptions<MicroCMSListResponse<T>> = {}
7075
) => {
7176
return useMicroCMSGet<MicroCMSListResponse<T>>(
7277
{ url: endpoint, queries },
@@ -76,7 +81,7 @@ export const useMicroCMSGetList = <T>(
7681

7782
export const useMicroCMSGetListDetail = <T>(
7883
{ endpoint, contentId, queries }: MicroCMSGetListDetailArgs,
79-
fetchOptions: FetchOptions = {}
84+
fetchOptions: FetchOptions<T & MicroCMSListContent> = {}
8085
) => {
8186
return useMicroCMSGet<T & MicroCMSListContent>(
8287
{ url: `${endpoint}/${contentId}`, queries },
@@ -86,7 +91,7 @@ export const useMicroCMSGetListDetail = <T>(
8691

8792
export const useMicroCMSGetObject = <T>(
8893
{ endpoint, queries }: MicroCMSGetObjectArgs,
89-
fetchOptions: FetchOptions = {}
94+
fetchOptions: FetchOptions<T & MicroCMSObjectContent> = {}
9095
) => {
9196
return useMicroCMSGet<T & MicroCMSObjectContent>(
9297
{ url: endpoint, queries },

src/runtime/composables/useMicroCMSUrl.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,9 @@ const VERSION = 'v1';
77
export const useMicroCMSUrl: UseMicroCMSUrl = () => {
88
const config = useRuntimeConfig();
99

10-
return `https://${config.microCMS.serviceDomain}.microcms.io/api/${VERSION}`;
10+
return `https://${
11+
config.microCMS
12+
? config.microCMS.serviceDomain
13+
: config.public.microCMS.serviceDomain
14+
}.microcms.io/api/${VERSION}`;
1115
};

0 commit comments

Comments
 (0)