From 6e2cb1bf8fa8f06f875053d012adf5195c6332d6 Mon Sep 17 00:00:00 2001 From: Nikita Melnikov Date: Wed, 28 Dec 2022 05:39:56 +0400 Subject: [PATCH] fix favicon problem --- package.json | 2 +- src/backend/build-static.ts | 35 ++++++++++++++-------------- src/backend/utils/downloadFavicon.ts | 17 +++++++------- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/package.json b/package.json index 9cb812d..7462680 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "codex.docs", "license": "Apache-2.0", - "version": "v2.2.0-rc.13", + "version": "v2.2.0-rc.16", "type": "module", "bin": { "codex.docs": "dist/backend/app.js" diff --git a/src/backend/build-static.ts b/src/backend/build-static.ts index 9349268..ca0894a 100644 --- a/src/backend/build-static.ts +++ b/src/backend/build-static.ts @@ -64,6 +64,24 @@ export default async function buildStatic(): Promise { return; } + console.log('Copy public directory'); + const publicDir = path.resolve(dirname, '../../public'); + + console.log(`Copy from ${publicDir} to ${distPath}`); + + try { + await fse.copy(publicDir, distPath); + console.log('Public directory copied'); + } catch (e) { + console.log('Error while copying public directory'); + console.error(e); + } + + const favicon = appConfig.favicon ? await downloadFavicon(appConfig.favicon, distPath, '') : { + destination: '/favicon.png', + type: 'image/png', + }; + /** * Renders single page @@ -88,10 +106,6 @@ export default async function buildStatic(): Promise { const previousPage = await PagesFlatArray.getPageBefore(pageId); const nextPage = await PagesFlatArray.getPageAfter(pageId); const menu = createMenuTree(parentIdOfRootPages, allPages, pagesOrder, 2); - const favicon = appConfig.favicon ? await downloadFavicon(appConfig.favicon, distPath) : { - destination: '/favicon.png', - type: 'image/png', - }; const result = await renderTemplate('./views/pages/page.twig', { page, @@ -151,19 +165,6 @@ export default async function buildStatic(): Promise { } console.log('Static files built'); - console.log('Copy public directory'); - const publicDir = path.resolve(dirname, '../../public'); - - console.log(`Copy from ${publicDir} to ${distPath}`); - - try { - await fse.copy(publicDir, distPath); - console.log('Public directory copied'); - } catch (e) { - console.log('Error while copying public directory'); - console.error(e); - } - if (appConfig.uploads.driver === 'local') { console.log('Copy uploads directory'); await fse.copy(path.resolve(cwd, appConfig.uploads.local.path), path.resolve(distPath, 'uploads')); diff --git a/src/backend/utils/downloadFavicon.ts b/src/backend/utils/downloadFavicon.ts index 73aa2c0..ed10cdb 100644 --- a/src/backend/utils/downloadFavicon.ts +++ b/src/backend/utils/downloadFavicon.ts @@ -1,5 +1,5 @@ import path from 'path'; -import fs from 'fs'; +import fs from 'fs/promises'; import fetch, { RequestInit } from 'node-fetch'; /** @@ -32,9 +32,10 @@ function checkIsUrl(str: string): boolean { * * @param destination - url or path of favicon * @param faviconFolder - folder to save favicon + * @param subRoute - subroute from which the favicon will be served * @returns { Promise } - Promise with data about favicon */ -export async function downloadFavicon(destination: string, faviconFolder: string): Promise { +export async function downloadFavicon(destination: string, faviconFolder: string, subRoute = '/favicon'): Promise { // Check of destination is empty if (!destination) { throw Error('Favicon destination is empty'); @@ -48,8 +49,10 @@ export async function downloadFavicon(destination: string, faviconFolder: string // Check if string is url if (!checkIsUrl(destination)) { + await fs.copyFile(destination, path.join(faviconFolder, filename)); + return { - destination: `/${filename}`, + destination: `${subRoute}/${filename}`, type: `image/${format}`, } as FaviconData; } @@ -72,14 +75,10 @@ export async function downloadFavicon(destination: string, faviconFolder: string const filePath = path.join(faviconFolder, `favicon.${format}`); // Save file - await fs.writeFile(filePath, fileData, (err) => { - if (err) { - console.log(err); - } - }); + await fs.writeFile(filePath, fileData); return { - destination: `/favicon/favicon.${format}`, + destination: `${subRoute}/favicon.${format}`, type: `image/${format}`, } as FaviconData; }