mirror of
https://github.com/Aviortheking/next-template.git
synced 2025-07-29 00:09:53 +00:00
Updated to V2
Signed-off-by: Florian Bouillon <florian.bouillon@delta-wings.net>
This commit is contained in:
67
scripts/generateFavicons.js
Normal file
67
scripts/generateFavicons.js
Normal file
@ -0,0 +1,67 @@
|
||||
|
||||
|
||||
const favicons = require('favicons')
|
||||
const package = require('../package.json')
|
||||
const config = require('../scriptsConfig.json').favicons
|
||||
const fs = require('fs')
|
||||
|
||||
if (!config.enabled) {
|
||||
return
|
||||
}
|
||||
|
||||
// image source
|
||||
const source = config.sourceFile
|
||||
|
||||
// Output folder
|
||||
const outFolder = config.assetsOutput
|
||||
|
||||
// Typescript React outpout file
|
||||
// NOTE: add the file to your .gitignore
|
||||
const tsxOutput = config.tsxOutput
|
||||
|
||||
// Configuration
|
||||
const configuration = config.config
|
||||
if (configuration.version === 'package.json') {
|
||||
configuration.version = package.version
|
||||
}
|
||||
|
||||
console.log('Generating Favicons...')
|
||||
favicons(source, configuration, (error, response) => {
|
||||
if (error) {
|
||||
console.log(error)
|
||||
return
|
||||
}
|
||||
|
||||
console.log('Saving Files')
|
||||
let gitignore = ''
|
||||
for (const file of response.images) {
|
||||
fs.writeFileSync(`${outFolder}/${file.name}`, file.contents)
|
||||
gitignore += `${file.name}\n`
|
||||
}
|
||||
|
||||
for (const file of response.files) {
|
||||
fs.writeFileSync(`${outFolder}/${file.name}`, file.contents)
|
||||
gitignore += `${file.name}\n`
|
||||
}
|
||||
fs.writeFileSync(`${outFolder}/.gitignore`, gitignore)
|
||||
|
||||
if (!tsxOutput) {
|
||||
return
|
||||
}
|
||||
|
||||
var htmlList = response.html.map((el) => ` ${el.replace('>', '/>')}`).join('\n')
|
||||
|
||||
fs.writeFileSync(tsxOutput, `import React from 'react'
|
||||
|
||||
export default class Favicons extends React.Component {
|
||||
|
||||
public render = () => (
|
||||
<>
|
||||
${htmlList}
|
||||
</>
|
||||
)
|
||||
|
||||
}
|
||||
`)
|
||||
console.log('Saved!')
|
||||
})
|
@ -3,23 +3,44 @@
|
||||
* for static exports
|
||||
**/
|
||||
|
||||
const config = require('../scriptsConfig.json').sitemap
|
||||
const glob = require('glob')
|
||||
const fs = require('fs')
|
||||
const fs = require('fs/promises')
|
||||
const { SitemapStream , streamToPromise } = require('sitemap')
|
||||
const { Readable } = require( 'stream' )
|
||||
|
||||
// DOMAIN NAME WITHOUT THE LAST /
|
||||
const domain = "https://www.avior.me"
|
||||
|
||||
const files = glob.sync('./out/**/*.html')
|
||||
let res = `<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">`
|
||||
|
||||
for (let file of files) {
|
||||
file = file.replace("./out", "").replace("index.html", "")
|
||||
res += `<url><loc>${domain}${file}</loc></url>`
|
||||
if (!config.enabled) {
|
||||
return
|
||||
}
|
||||
console.log('Generating Sitemap...')
|
||||
|
||||
res += `</urlset>`
|
||||
fs.writeFileSync('./out/sitemap.xml', res)
|
||||
const stream = new SitemapStream(config.config)
|
||||
|
||||
;(async () => {
|
||||
console.log('Fetching files')
|
||||
const files = await new Promise((res, rej) => {
|
||||
glob('./out/**/*.html', (err, results) => {
|
||||
if (err) {
|
||||
rej(err)
|
||||
}
|
||||
res(results.map(el => ({url: el.replace('./out', '').replace('index.html', '')})))
|
||||
})
|
||||
})
|
||||
console.log('Merging with custom routes')
|
||||
for (const item of config.customRoutes) {
|
||||
const index = files.findIndex((val) => val.url === item.url)
|
||||
if (index !== -1) {
|
||||
files[index] = item
|
||||
} else {
|
||||
files.push(item)
|
||||
}
|
||||
}
|
||||
|
||||
console.log('Pasing to sitemap.xml')
|
||||
const res = await streamToPromise(Readable.from(files).pipe(stream))
|
||||
|
||||
console.log(res)
|
||||
console.log('Writing file')
|
||||
await fs.writeFile(config.outputPath, res)
|
||||
|
||||
process.exit(0)
|
||||
})()
|
||||
|
Reference in New Issue
Block a user