diff --git a/packages/cli/src/plugins/copy/plugin-copy-sitemap.js b/packages/cli/src/plugins/copy/plugin-copy-sitemap.js new file mode 100644 index 000000000..b69d8cb95 --- /dev/null +++ b/packages/cli/src/plugins/copy/plugin-copy-sitemap.js @@ -0,0 +1,40 @@ +import { checkResourceExists } from "@greenwood/cli/src/lib/resource-utils.js"; +import fs from 'fs/promises'; + + +async function writeSitemap(compilation) { + try { + const { scratchDir, projectDirectory } = compilation.context; + const adapterScratchUrl = new URL('./sitemap.xml', scratchDir); + + // Check if module exists + const sitemapModule = await import(`${projectDirectory}/src/sitemap.xml.js`); + const sitemap = await sitemapModule.generateSitemap(compilation); + + await fs.writeFile(adapterScratchUrl, sitemap); + console.info('Wrote sitemap to ./sitemap.xml'); + + return adapterScratchUrl; + } catch (error) { + console.error('Error in sitemapAdapter:', error); + } + } + + + +const greenwoodPluginCopySitemap = [{ + type: 'copy', + name: 'plugin-copy-sitemap', + provider: async (compilation) => { + + const { outputDir } = compilation.context; + const sitemapScratchUrl = await writeSitemap(compilation); + + return [{ + from: sitemapScratchUrl, + to: new URL('./sitemap.xml', outputDir) + }]; + } +}]; + +export { greenwoodPluginCopySitemap }; \ No newline at end of file diff --git a/packages/plugin-adapter-sitemap/src/index.js b/packages/cli/src/plugins/resource/plugin-resource-sitemap.js similarity index 54% rename from packages/plugin-adapter-sitemap/src/index.js rename to packages/cli/src/plugins/resource/plugin-resource-sitemap.js index aafd11ba8..0eb9b6c80 100644 --- a/packages/plugin-adapter-sitemap/src/index.js +++ b/packages/cli/src/plugins/resource/plugin-resource-sitemap.js @@ -1,28 +1,5 @@ -import fs from 'fs/promises'; import { ResourceInterface } from '@greenwood/cli/src/lib/resource-interface.js'; -async function sitemapAdapter(compilation) { - try { - const { outputDir, projectDirectory } = compilation.context; - const adapterOutputUrl = new URL('./sitemap.xml', outputDir); - - // Check if module exists - const sitemapModule = await import(`${projectDirectory}/src/sitemap.xml.js`); - const sitemap = await sitemapModule.generateSitemap(compilation); - - await fs.writeFile(adapterOutputUrl, sitemap); - console.info('Wrote sitemap to ./sitemap.xml'); - } catch (error) { - console.error('Error in sitemapAdapter:', error); - } -} - -/* - * - * Sitemap - * - */ - class SitemapResource extends ResourceInterface { constructor(compilation, options) { super(compilation, options); @@ -51,19 +28,10 @@ class SitemapResource extends ResourceInterface { } -const greenwoodPluginSitemap = (options = {}) => [{ - type: 'adapter', - name: 'plugin-adapter-sitemap', - provider: (compilation) => { - return async () => { - await sitemapAdapter(compilation, options); - }; - } -}, -{ +const greenwoodPluginSitemap = { type: 'resource', - name: 'plugin-sitemap', + name: 'plugin-resource-sitemap', provider: (compilation, options) => new SitemapResource(compilation, options) -}]; +}; export { greenwoodPluginSitemap }; \ No newline at end of file diff --git a/packages/plugin-adapter-sitemap/test/cases/build.default/build.default.spec.js b/packages/cli/test/cases/build.plugins.copy-sitemap/build.plugins.copy-sitemap.spec.js similarity index 100% rename from packages/plugin-adapter-sitemap/test/cases/build.default/build.default.spec.js rename to packages/cli/test/cases/build.plugins.copy-sitemap/build.plugins.copy-sitemap.spec.js diff --git a/packages/cli/test/cases/build.plugins.copy-sitemap/greenwood.config.js b/packages/cli/test/cases/build.plugins.copy-sitemap/greenwood.config.js new file mode 100644 index 000000000..07b79d186 --- /dev/null +++ b/packages/cli/test/cases/build.plugins.copy-sitemap/greenwood.config.js @@ -0,0 +1,3 @@ +export default { + plugins: [] +}; \ No newline at end of file diff --git a/packages/plugin-adapter-sitemap/test/cases/build.default/src/pages/about.md b/packages/cli/test/cases/build.plugins.copy-sitemap/src/pages/about.md similarity index 100% rename from packages/plugin-adapter-sitemap/test/cases/build.default/src/pages/about.md rename to packages/cli/test/cases/build.plugins.copy-sitemap/src/pages/about.md diff --git a/packages/plugin-adapter-sitemap/test/cases/build.default/src/pages/index.md b/packages/cli/test/cases/build.plugins.copy-sitemap/src/pages/index.md similarity index 100% rename from packages/plugin-adapter-sitemap/test/cases/build.default/src/pages/index.md rename to packages/cli/test/cases/build.plugins.copy-sitemap/src/pages/index.md diff --git a/packages/plugin-adapter-sitemap/test/cases/build.default/src/sitemap.xml.js b/packages/cli/test/cases/build.plugins.copy-sitemap/src/sitemap.xml.js similarity index 100% rename from packages/plugin-adapter-sitemap/test/cases/build.default/src/sitemap.xml.js rename to packages/cli/test/cases/build.plugins.copy-sitemap/src/sitemap.xml.js diff --git a/packages/plugin-adapter-sitemap/test/cases/develop.default/develop.default.spec.js b/packages/cli/test/cases/develop.plugins.resource-sitemap/develop.plugins.resource-sitemap.spec.js similarity index 100% rename from packages/plugin-adapter-sitemap/test/cases/develop.default/develop.default.spec.js rename to packages/cli/test/cases/develop.plugins.resource-sitemap/develop.plugins.resource-sitemap.spec.js diff --git a/packages/cli/test/cases/develop.plugins.resource-sitemap/greenwood.config.js b/packages/cli/test/cases/develop.plugins.resource-sitemap/greenwood.config.js new file mode 100644 index 000000000..0e4a08694 --- /dev/null +++ b/packages/cli/test/cases/develop.plugins.resource-sitemap/greenwood.config.js @@ -0,0 +1,5 @@ + +export default { + plugins: [ + ] +}; \ No newline at end of file diff --git a/packages/plugin-adapter-sitemap/test/cases/develop.default/src/pages/about.md b/packages/cli/test/cases/develop.plugins.resource-sitemap/src/pages/about.md similarity index 100% rename from packages/plugin-adapter-sitemap/test/cases/develop.default/src/pages/about.md rename to packages/cli/test/cases/develop.plugins.resource-sitemap/src/pages/about.md diff --git a/packages/plugin-adapter-sitemap/test/cases/develop.default/src/pages/index.md b/packages/cli/test/cases/develop.plugins.resource-sitemap/src/pages/index.md similarity index 100% rename from packages/plugin-adapter-sitemap/test/cases/develop.default/src/pages/index.md rename to packages/cli/test/cases/develop.plugins.resource-sitemap/src/pages/index.md diff --git a/packages/plugin-adapter-sitemap/test/cases/develop.default/src/sitemap.xml.js b/packages/cli/test/cases/develop.plugins.resource-sitemap/src/sitemap.xml.js similarity index 100% rename from packages/plugin-adapter-sitemap/test/cases/develop.default/src/sitemap.xml.js rename to packages/cli/test/cases/develop.plugins.resource-sitemap/src/sitemap.xml.js diff --git a/packages/plugin-adapter-sitemap/test/cases/build.default/greenwood.config.js b/packages/plugin-adapter-sitemap/test/cases/build.default/greenwood.config.js deleted file mode 100644 index d4bed8353..000000000 --- a/packages/plugin-adapter-sitemap/test/cases/build.default/greenwood.config.js +++ /dev/null @@ -1,8 +0,0 @@ - -import { greenwoodPluginSitemap } from '../../../src/index.js'; - -export default { - plugins: [ - greenwoodPluginSitemap() - ] -}; \ No newline at end of file diff --git a/packages/plugin-adapter-sitemap/test/cases/develop.default/greenwood.config.js b/packages/plugin-adapter-sitemap/test/cases/develop.default/greenwood.config.js deleted file mode 100644 index d4bed8353..000000000 --- a/packages/plugin-adapter-sitemap/test/cases/develop.default/greenwood.config.js +++ /dev/null @@ -1,8 +0,0 @@ - -import { greenwoodPluginSitemap } from '../../../src/index.js'; - -export default { - plugins: [ - greenwoodPluginSitemap() - ] -}; \ No newline at end of file