| Server IP : 185.208.173.17 / Your IP : 87.236.161.98 Web Server : Microsoft-IIS/10.0 System : Windows NT SRV8576125506 10.0 build 26100 (Windows Server 2016) AMD64 User : IUSR ( 0) PHP Version : 7.4.13 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/inetpub/wwwroot/parsmega.nuxt/node_modules/@nuxtjs/sitemap/lib/ |
Upload File : |
const path = require('path')
const fs = require('fs-extra')
const { generateSitemaps } = require('./generator')
const logger = require('./logger')
const { registerSitemaps } = require('./middleware')
const { getStaticRoutes } = require('./routes')
module.exports = async function module(moduleOptions) {
const nuxtInstance = this
// Init options
const options = await initOptions(nuxtInstance, moduleOptions)
if (options === false) {
logger.info('Sitemap disabled')
return
}
// Init cache
// a file "sitemap-routes.json" is written to "dist" dir on "build" mode
const jsonStaticRoutesPath = !nuxtInstance.options.dev
? path.resolve(nuxtInstance.options.buildDir, path.join('dist', 'sitemap-routes.json'))
: null
const staticRoutes = fs.readJsonSync(jsonStaticRoutesPath, { throws: false })
const globalCache = { staticRoutes }
// Init static routes
nuxtInstance.extendRoutes((routes) => {
// Create a cache for static routes
globalCache.staticRoutes = getStaticRoutes(routes)
// On run cmd "build"
if (!nuxtInstance.options.dev) {
// Save static routes
fs.outputJsonSync(jsonStaticRoutesPath, globalCache.staticRoutes)
}
})
// On "generate" mode, generate static files for each sitemap or sitemapindex
nuxtInstance.nuxt.hook('generate:done', async () => {
await nuxtInstance.nuxt.callHook('sitemap:generate:before', nuxtInstance, options)
logger.info('Generating sitemaps')
await Promise.all(options.map((options) => generateSitemaps(options, globalCache, nuxtInstance)))
await nuxtInstance.nuxt.callHook('sitemap:generate:done', nuxtInstance)
})
// On "ssr" mode, register middlewares for each sitemap or sitemapindex
options.forEach((options) => {
registerSitemaps(options, globalCache, nuxtInstance)
})
}
async function initOptions(nuxtInstance, moduleOptions) {
if (nuxtInstance.options.sitemap === false || moduleOptions === false) {
return false
}
let options = nuxtInstance.options.sitemap || moduleOptions
if (typeof options === 'function') {
options = await options.call(nuxtInstance)
}
if (options === false) {
return false
}
return Array.isArray(options) ? options : [options]
}
module.exports.meta = require('../package.json')