From 8279e565fdf520e3347f1af80a02728d6f5876e0 Mon Sep 17 00:00:00 2001 From: harlan Date: Mon, 15 Jul 2024 19:38:15 +1000 Subject: [PATCH] fix: support `@nuxtjs/robots` v4 merge --- .playground/nuxt.config.ts | 6 +- .../pages/blocked-by-robots-txt/foo.vue | 2 +- package.json | 2 +- pnpm-lock.yaml | 94 +++++++++---------- src/module.ts | 11 ++- 5 files changed, 58 insertions(+), 57 deletions(-) diff --git a/.playground/nuxt.config.ts b/.playground/nuxt.config.ts index 1ad8b228..b879c452 100644 --- a/.playground/nuxt.config.ts +++ b/.playground/nuxt.config.ts @@ -2,12 +2,12 @@ import { resolve } from 'node:path' import { defineNuxtConfig } from 'nuxt/config' import { defineNuxtModule } from '@nuxt/kit' import { startSubprocess } from '@nuxt/devtools-kit' -import NuxtSimpleSitemap from '../src/module' +import NuxtSitemap from '../src/module' export default defineNuxtConfig({ modules: [ - NuxtSimpleSitemap, - 'nuxt-simple-robots', + NuxtSitemap, + '@nuxtjs/robots', '@nuxtjs/i18n', '@nuxt/content', '@nuxt/ui', diff --git a/.playground/pages/blocked-by-robots-txt/foo.vue b/.playground/pages/blocked-by-robots-txt/foo.vue index 7b476eab..dab35317 100644 --- a/.playground/pages/blocked-by-robots-txt/foo.vue +++ b/.playground/pages/blocked-by-robots-txt/foo.vue @@ -1,3 +1,3 @@ diff --git a/package.json b/package.json index 79450509..97c92240 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "execa": "^9.3.0", "nuxt": "^3.12.3", "nuxt-icon": "1.0.0-beta.7", - "nuxt-simple-robots": "4.0.0-rc.20", + "@nuxtjs/robots": "4.0.0-rc.22", "typescript": "5.4.5", "vitest": "^2.0.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0aad9192..41816956 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -84,6 +84,9 @@ importers: '@nuxtjs/i18n': specifier: 8.3.1 version: 8.3.1(magicast@0.3.4)(rollup@4.18.0)(vue@3.4.31(typescript@5.4.5)) + '@nuxtjs/robots': + specifier: 4.0.0-rc.22 + version: 4.0.0-rc.22(@nuxt/devtools@1.3.9(rollup@4.18.0)(vite@5.3.2(@types/node@20.14.10)(terser@5.31.2)))(@unocss/webpack@0.61.0(rollup@4.18.0)(webpack@5.92.1))(@vue/compiler-core@3.4.31)(fuse.js@6.6.2)(magicast@0.3.4)(nuxt@3.12.3(@opentelemetry/api@1.9.0)(@parcel/watcher@2.4.1)(@types/node@20.14.10)(encoding@0.1.13)(eslint@9.6.0)(ioredis@5.4.1)(magicast@0.3.4)(optionator@0.9.4)(rollup@4.18.0)(terser@5.31.2)(typescript@5.4.5)(vite@5.3.2(@types/node@20.14.10)(terser@5.31.2)))(postcss@8.4.39)(rollup@4.18.0)(vite@5.3.2(@types/node@20.14.10)(terser@5.31.2))(vue@3.4.31(typescript@5.4.5))(webpack@5.92.1) bumpp: specifier: ^9.4.1 version: 9.4.1(magicast@0.3.4) @@ -102,9 +105,6 @@ importers: nuxt-icon: specifier: 1.0.0-beta.7 version: 1.0.0-beta.7(magicast@0.3.4)(rollup@4.18.0)(vite@5.3.2(@types/node@20.14.10)(terser@5.31.2))(vue@3.4.31(typescript@5.4.5)) - nuxt-simple-robots: - specifier: 4.0.0-rc.20 - version: 4.0.0-rc.20(@nuxt/devtools@1.3.9(rollup@4.18.0)(vite@5.3.2(@types/node@20.14.10)(terser@5.31.2)))(@unocss/webpack@0.61.0(rollup@4.18.0)(webpack@5.92.1))(@vue/compiler-core@3.4.31)(fuse.js@6.6.2)(magicast@0.3.4)(nuxt@3.12.3(@opentelemetry/api@1.9.0)(@parcel/watcher@2.4.1)(@types/node@20.14.10)(encoding@0.1.13)(eslint@9.6.0)(ioredis@5.4.1)(magicast@0.3.4)(optionator@0.9.4)(rollup@4.18.0)(terser@5.31.2)(typescript@5.4.5)(vite@5.3.2(@types/node@20.14.10)(terser@5.31.2)))(postcss@8.4.39)(rollup@4.18.0)(vite@5.3.2(@types/node@20.14.10)(terser@5.31.2))(vue@3.4.31(typescript@5.4.5))(webpack@5.92.1) typescript: specifier: 5.4.5 version: 5.4.5 @@ -1268,6 +1268,9 @@ packages: '@nuxtjs/mdc@0.8.3': resolution: {integrity: sha512-FqvJFWkBN9u2FeWog+7+C0aIOx0WIu61TYgAXPmmIOVVua6s2mXQsMyF3fXY2M56QBIaYJzK/SYN+5FGr5GNTQ==} + '@nuxtjs/robots@4.0.0-rc.22': + resolution: {integrity: sha512-C35Q+SR1IJ3fn8HFeUMQnuSLzZWYCoi4NPH0CBMPSzhhip3TtIP5Xnsm1nqGms7ccGWrNTqt13rjdClEcJdhjg==} + '@nuxtjs/tailwindcss@6.12.0': resolution: {integrity: sha512-vXvEq8z177TQcx0tc10mw3O6T9WeN0iTL8hIKGDfidmr+HKReexJU01aPgHefFrCu4LJB70egYFYnywzB9lMyQ==} @@ -4361,9 +4364,6 @@ packages: nuxt-icon@1.0.0-beta.7: resolution: {integrity: sha512-HdEn1sZGmkIX44L5rZ8YUMdIdVCpeBXycO2DdrqZmFilixcHax0XYdehc1VD6Kl9Sxg8B7sKPMelmDXVTbDwIw==} - nuxt-simple-robots@4.0.0-rc.20: - resolution: {integrity: sha512-CecIDNVKWP3Iv0qErfoY/2LGTSvQJ2cLVSv8xC+igrxpAtn95/CmCZrGaLXwoUssamudKWbcHepyf6EZ6r0YYg==} - nuxt-site-config-kit@2.2.14: resolution: {integrity: sha512-gjTFZP1G8jyUNO14HEYzNN5BXtwuJyeqQnWJJ6GraOcGcsvjqrz7CxS986+EfqHe7Mqe27QcccXpb360aT8aCA==} @@ -7575,6 +7575,47 @@ snapshots: - rollup - supports-color + '@nuxtjs/robots@4.0.0-rc.22(@nuxt/devtools@1.3.9(rollup@4.18.0)(vite@5.3.2(@types/node@20.14.10)(terser@5.31.2)))(@unocss/webpack@0.61.0(rollup@4.18.0)(webpack@5.92.1))(@vue/compiler-core@3.4.31)(fuse.js@6.6.2)(magicast@0.3.4)(nuxt@3.12.3(@opentelemetry/api@1.9.0)(@parcel/watcher@2.4.1)(@types/node@20.14.10)(encoding@0.1.13)(eslint@9.6.0)(ioredis@5.4.1)(magicast@0.3.4)(optionator@0.9.4)(rollup@4.18.0)(terser@5.31.2)(typescript@5.4.5)(vite@5.3.2(@types/node@20.14.10)(terser@5.31.2)))(postcss@8.4.39)(rollup@4.18.0)(vite@5.3.2(@types/node@20.14.10)(terser@5.31.2))(vue@3.4.31(typescript@5.4.5))(webpack@5.92.1)': + dependencies: + '@nuxt/devtools-kit': 1.3.9(magicast@0.3.4)(rollup@4.18.0)(vite@5.3.2(@types/node@20.14.10)(terser@5.31.2)) + '@nuxt/kit': 3.12.3(magicast@0.3.4)(rollup@4.18.0) + consola: 3.2.3 + defu: 6.1.4 + flatted: 3.3.1 + floating-vue: 5.2.2(@nuxt/kit@3.12.3(magicast@0.3.4)(rollup@4.18.0))(vue@3.4.31(typescript@5.4.5)) + nuxt-site-config: 2.2.14(@nuxt/devtools@1.3.9(rollup@4.18.0)(vite@5.3.2(@types/node@20.14.10)(terser@5.31.2)))(@unocss/webpack@0.61.0(rollup@4.18.0)(webpack@5.92.1))(@vue/compiler-core@3.4.31)(fuse.js@6.6.2)(magicast@0.3.4)(nuxt@3.12.3(@opentelemetry/api@1.9.0)(@parcel/watcher@2.4.1)(@types/node@20.14.10)(encoding@0.1.13)(eslint@9.6.0)(ioredis@5.4.1)(magicast@0.3.4)(optionator@0.9.4)(rollup@4.18.0)(terser@5.31.2)(typescript@5.4.5)(vite@5.3.2(@types/node@20.14.10)(terser@5.31.2)))(postcss@8.4.39)(rollup@4.18.0)(vite@5.3.2(@types/node@20.14.10)(terser@5.31.2))(vue@3.4.31(typescript@5.4.5))(webpack@5.92.1) + nuxt-site-config-kit: 2.2.14(magicast@0.3.4)(rollup@4.18.0)(vue@3.4.31(typescript@5.4.5)) + pathe: 1.1.2 + pkg-types: 1.1.3 + shiki: 1.10.1 + sirv: 2.0.4 + std-env: 3.7.0 + ufo: 1.5.3 + transitivePeerDependencies: + - '@nuxt/devtools' + - '@unocss/webpack' + - '@vue/compiler-core' + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - magicast + - nprogress + - nuxt + - postcss + - qrcode + - rollup + - sortablejs + - supports-color + - universal-cookie + - vite + - vue + - webpack + '@nuxtjs/tailwindcss@6.12.0(magicast@0.3.4)(rollup@4.18.0)': dependencies: '@nuxt/kit': 3.12.3(magicast@0.3.4)(rollup@4.18.0) @@ -11428,47 +11469,6 @@ snapshots: - vite - vue - nuxt-simple-robots@4.0.0-rc.20(@nuxt/devtools@1.3.9(rollup@4.18.0)(vite@5.3.2(@types/node@20.14.10)(terser@5.31.2)))(@unocss/webpack@0.61.0(rollup@4.18.0)(webpack@5.92.1))(@vue/compiler-core@3.4.31)(fuse.js@6.6.2)(magicast@0.3.4)(nuxt@3.12.3(@opentelemetry/api@1.9.0)(@parcel/watcher@2.4.1)(@types/node@20.14.10)(encoding@0.1.13)(eslint@9.6.0)(ioredis@5.4.1)(magicast@0.3.4)(optionator@0.9.4)(rollup@4.18.0)(terser@5.31.2)(typescript@5.4.5)(vite@5.3.2(@types/node@20.14.10)(terser@5.31.2)))(postcss@8.4.39)(rollup@4.18.0)(vite@5.3.2(@types/node@20.14.10)(terser@5.31.2))(vue@3.4.31(typescript@5.4.5))(webpack@5.92.1): - dependencies: - '@nuxt/devtools-kit': 1.3.9(magicast@0.3.4)(rollup@4.18.0)(vite@5.3.2(@types/node@20.14.10)(terser@5.31.2)) - '@nuxt/kit': 3.12.3(magicast@0.3.4)(rollup@4.18.0) - consola: 3.2.3 - defu: 6.1.4 - flatted: 3.3.1 - floating-vue: 5.2.2(@nuxt/kit@3.12.3(magicast@0.3.4)(rollup@4.18.0))(vue@3.4.31(typescript@5.4.5)) - nuxt-site-config: 2.2.14(@nuxt/devtools@1.3.9(rollup@4.18.0)(vite@5.3.2(@types/node@20.14.10)(terser@5.31.2)))(@unocss/webpack@0.61.0(rollup@4.18.0)(webpack@5.92.1))(@vue/compiler-core@3.4.31)(fuse.js@6.6.2)(magicast@0.3.4)(nuxt@3.12.3(@opentelemetry/api@1.9.0)(@parcel/watcher@2.4.1)(@types/node@20.14.10)(encoding@0.1.13)(eslint@9.6.0)(ioredis@5.4.1)(magicast@0.3.4)(optionator@0.9.4)(rollup@4.18.0)(terser@5.31.2)(typescript@5.4.5)(vite@5.3.2(@types/node@20.14.10)(terser@5.31.2)))(postcss@8.4.39)(rollup@4.18.0)(vite@5.3.2(@types/node@20.14.10)(terser@5.31.2))(vue@3.4.31(typescript@5.4.5))(webpack@5.92.1) - nuxt-site-config-kit: 2.2.14(magicast@0.3.4)(rollup@4.18.0)(vue@3.4.31(typescript@5.4.5)) - pathe: 1.1.2 - pkg-types: 1.1.3 - shiki: 1.10.1 - sirv: 2.0.4 - std-env: 3.7.0 - ufo: 1.5.3 - transitivePeerDependencies: - - '@nuxt/devtools' - - '@unocss/webpack' - - '@vue/compiler-core' - - '@vue/composition-api' - - async-validator - - axios - - change-case - - drauu - - fuse.js - - idb-keyval - - jwt-decode - - magicast - - nprogress - - nuxt - - postcss - - qrcode - - rollup - - sortablejs - - supports-color - - universal-cookie - - vite - - vue - - webpack - nuxt-site-config-kit@2.2.14(magicast@0.3.4)(rollup@4.18.0)(vue@3.4.31(typescript@5.4.5)): dependencies: '@nuxt/kit': 3.12.3(magicast@0.3.4)(rollup@4.18.0) diff --git a/src/module.ts b/src/module.ts index 4f9fd270..1da7c9cd 100644 --- a/src/module.ts +++ b/src/module.ts @@ -237,11 +237,12 @@ export default defineNuxtModule({ } let needsRobotsPolyfill = true - if (hasNuxtModule('nuxt-simple-robots')) { - const robotsVersion = await getNuxtModuleVersion('nuxt-simple-robots') + const robotsModuleName = hasNuxtModule('nuxt-simple-robots') ? 'nuxt-simple-robots' : hasNuxtModule('@nuxtjs/robots') ? '@nuxtjs/robots' : false + if (robotsModuleName) { + const robotsVersion = await getNuxtModuleVersion(robotsModuleName) // we want to keep versions in sync - if (!await hasNuxtModuleCompatibility('nuxt-simple-robots', '>=4')) - logger.warn(`You are using nuxt-simple-robots v${robotsVersion}. For the best compatibility, please upgrade to nuxt-simple-robots v4.0.0 or higher.`) + if (!await hasNuxtModuleCompatibility(robotsModuleName, '>=4')) + logger.warn(`You are using ${robotsModuleName} v${robotsVersion}. For the best compatibility, please upgrade to ${robotsModuleName} v4.0.0 or higher.`) else needsRobotsPolyfill = false // @ts-expect-error untyped @@ -249,7 +250,7 @@ export default defineNuxtModule({ robotsConfig.sitemap.push(usingMultiSitemaps ? '/sitemap_index.xml' : `/${config.sitemapName}`) }) } - // this is added in v4 of Nuxt Simple Robots + // this is added in v4 of Nuxt Robots if (needsRobotsPolyfill) { addServerImports([{ name: 'getPathRobotConfigPolyfill',