feat: add the switch for speeding up the building.

This commit is contained in:
Yufan Sheng 2024-11-29 15:30:31 +08:00
parent f5b7a825c8
commit 14bbd44d84
Signed by: syhily
GPG Key ID: 9D18A22A7DCD5A9B
5 changed files with 64 additions and 159 deletions

View File

@ -7,6 +7,7 @@ import rehypeExternalLinks from 'rehype-external-links';
import rehypeSlug from 'rehype-slug'; import rehypeSlug from 'rehype-slug';
import options from './options'; import options from './options';
import { astroImage } from './plugins/images'; import { astroImage } from './plugins/images';
import { openGraph } from './plugins/open-graph';
// https://astro.build/config // https://astro.build/config
export default defineConfig({ export default defineConfig({
@ -37,6 +38,8 @@ export default defineConfig({
ARTALK_PORT: envField.number({ context: 'server', access: 'secret' }), ARTALK_PORT: envField.number({ context: 'server', access: 'secret' }),
// Build the Open Graph // Build the Open Graph
BUILD_OPEN_GRAPH: envField.boolean({ context: 'server', access: 'public', default: true }), BUILD_OPEN_GRAPH: envField.boolean({ context: 'server', access: 'public', default: true }),
// Upload the files
UPLOAD_STATIC_FILES: envField.boolean({ context: 'server', access: 'public', default: false }),
}, },
validateSecrets: true, validateSecrets: true,
}, },
@ -51,12 +54,19 @@ export default defineConfig({
], ],
}), }),
uploader({ uploader({
paths: ['images', 'assets'], enable:
process.env.BUILD_OPEN_GRAPH === undefined ||
process.env.BUILD_OPEN_GRAPH === 'true' ||
process.env.UPLOAD_STATIC_FILES === 'true',
paths: [{ path: 'images', recursive: true, keep: false, override: false }, 'assets'],
recursive: true,
keep: false,
endpoint: process.env.S3_ENDPOINT, endpoint: process.env.S3_ENDPOINT,
bucket: process.env.S3_BUCKET as string, bucket: process.env.S3_BUCKET as string,
accessKey: process.env.S3_ACCESS_KEY as string, accessKey: process.env.S3_ACCESS_KEY as string,
secretAccessKey: process.env.S3_SECRET_ACCESS_KEY as string, secretAccessKey: process.env.S3_SECRET_ACCESS_KEY as string,
}), }),
openGraph(),
], ],
adapter: zeabur(), adapter: zeabur(),
markdown: { markdown: {

192
package-lock.json generated
View File

@ -17,7 +17,7 @@
"fuse.js": "^7.0.0", "fuse.js": "^7.0.0",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"luxon": "^3.5.0", "luxon": "^3.5.0",
"marked": "^15.0.2", "marked": "^15.0.3",
"pg": "^8.13.1", "pg": "^8.13.1",
"pinyin-pro": "^3.26.0", "pinyin-pro": "^3.26.0",
"qrcode-svg": "^1.1.0", "qrcode-svg": "^1.1.0",
@ -35,7 +35,7 @@
"@types/qrcode-svg": "^1.1.5", "@types/qrcode-svg": "^1.1.5",
"@types/unist": "^3.0.3", "@types/unist": "^3.0.3",
"aplayer": "^1.10.1", "aplayer": "^1.10.1",
"astro-uploader": "^1.1.3", "astro-uploader": "^1.2.1",
"bootstrap": "^5.3.3", "bootstrap": "^5.3.3",
"prettier": "^3.4.1", "prettier": "^3.4.1",
"prettier-plugin-astro": "^0.14.1", "prettier-plugin-astro": "^0.14.1",
@ -2058,17 +2058,6 @@
"integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==", "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/@pkgjs/parseargs": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
"integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
"dev": true,
"license": "MIT",
"optional": true,
"engines": {
"node": ">=14"
}
},
"node_modules/@popperjs/core": { "node_modules/@popperjs/core": {
"version": "2.11.8", "version": "2.11.8",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
@ -2969,88 +2958,15 @@
} }
}, },
"node_modules/astro-uploader": { "node_modules/astro-uploader": {
"version": "1.1.3", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/astro-uploader/-/astro-uploader-1.1.3.tgz", "resolved": "https://registry.npmjs.org/astro-uploader/-/astro-uploader-1.2.1.tgz",
"integrity": "sha512-Ij5IJj1J2Fb/Ik8RcQ2kaaOIFxvWQmfE4zrAUjIpg/RvH9sb9LpsgRRkqUkPRDxhlzNCguwo6awjrdcdnOwcRQ==", "integrity": "sha512-H7XXuBc5qwUXL4YlZv7K9oixrZAMbhbMdbyb6Wjhd6d+3Zb/2zS3zTuMXAPOQRthOiSVcI+Dsiq4sU9u7Al9SQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"mime": "^4.0.4", "mime": "^4.0.4",
"opendal": "^0.47.0", "opendal": "^0.47.7",
"rimraf": "^5.0.8" "rimraf": "^6.0.1"
}
},
"node_modules/astro-uploader/node_modules/brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dev": true,
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
}
},
"node_modules/astro-uploader/node_modules/glob": {
"version": "10.4.5",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
"integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
"dev": true,
"license": "ISC",
"dependencies": {
"foreground-child": "^3.1.0",
"jackspeak": "^3.1.2",
"minimatch": "^9.0.4",
"minipass": "^7.1.2",
"package-json-from-dist": "^1.0.0",
"path-scurry": "^1.11.1"
},
"bin": {
"glob": "dist/esm/bin.mjs"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/astro-uploader/node_modules/minimatch": {
"version": "9.0.5",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"dev": true,
"license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/astro-uploader/node_modules/minipass": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
"integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
"dev": true,
"license": "ISC",
"engines": {
"node": ">=16 || 14 >=14.17"
}
},
"node_modules/astro-uploader/node_modules/rimraf": {
"version": "5.0.10",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz",
"integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==",
"dev": true,
"license": "ISC",
"dependencies": {
"glob": "^10.3.7"
},
"bin": {
"rimraf": "dist/esm/bin.mjs"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
} }
}, },
"node_modules/astro/node_modules/@rollup/pluginutils": { "node_modules/astro/node_modules/@rollup/pluginutils": {
@ -5089,19 +5005,19 @@
"license": "ISC" "license": "ISC"
}, },
"node_modules/jackspeak": { "node_modules/jackspeak": {
"version": "3.4.3", "version": "4.0.2",
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.2.tgz",
"integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "integrity": "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==",
"dev": true, "dev": true,
"license": "BlueOak-1.0.0", "license": "BlueOak-1.0.0",
"dependencies": { "dependencies": {
"@isaacs/cliui": "^8.0.2" "@isaacs/cliui": "^8.0.2"
}, },
"engines": {
"node": "20 || >=22"
},
"funding": { "funding": {
"url": "https://github.com/sponsors/isaacs" "url": "https://github.com/sponsors/isaacs"
},
"optionalDependencies": {
"@pkgjs/parseargs": "^0.11.0"
} }
}, },
"node_modules/js-tokens": { "node_modules/js-tokens": {
@ -5356,9 +5272,9 @@
} }
}, },
"node_modules/marked": { "node_modules/marked": {
"version": "15.0.2", "version": "15.0.3",
"resolved": "https://registry.npmjs.org/marked/-/marked-15.0.2.tgz", "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.3.tgz",
"integrity": "sha512-85RUkoYKIVB21PbMKrnD6aCl9ws+XKEyhJNMbLn206NyD3jbBo7Ec7Wi4Jrsn4dV1a2ng7K/jfkmIN0DNoS41w==", "integrity": "sha512-Ai0cepvl2NHnTcO9jYDtcOEtVBNVYR31XnEA3BndO7f5As1wzpcOceSUM8FDkNLJNIODcLpDTWay/qQhqbuMvg==",
"license": "MIT", "license": "MIT",
"bin": { "bin": {
"marked": "bin/marked.js" "marked": "bin/marked.js"
@ -6940,28 +6856,41 @@
} }
}, },
"node_modules/path-scurry": { "node_modules/path-scurry": {
"version": "1.11.1", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz",
"integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==",
"dev": true, "dev": true,
"license": "BlueOak-1.0.0", "license": "BlueOak-1.0.0",
"dependencies": { "dependencies": {
"lru-cache": "^10.2.0", "lru-cache": "^11.0.0",
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" "minipass": "^7.1.2"
}, },
"engines": { "engines": {
"node": ">=16 || 14 >=14.18" "node": "20 || >=22"
}, },
"funding": { "funding": {
"url": "https://github.com/sponsors/isaacs" "url": "https://github.com/sponsors/isaacs"
} }
}, },
"node_modules/path-scurry/node_modules/lru-cache": { "node_modules/path-scurry/node_modules/lru-cache": {
"version": "10.4.3", "version": "11.0.2",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz",
"integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==",
"dev": true, "dev": true,
"license": "ISC" "license": "ISC",
"engines": {
"node": "20 || >=22"
}
},
"node_modules/path-scurry/node_modules/minipass": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
"integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
"dev": true,
"license": "ISC",
"engines": {
"node": ">=16 || 14 >=14.17"
}
}, },
"node_modules/pg": { "node_modules/pg": {
"version": "8.13.1", "version": "8.13.1",
@ -7944,32 +7873,6 @@
"url": "https://github.com/sponsors/isaacs" "url": "https://github.com/sponsors/isaacs"
} }
}, },
"node_modules/rimraf/node_modules/jackspeak": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.2.tgz",
"integrity": "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
"@isaacs/cliui": "^8.0.2"
},
"engines": {
"node": "20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/rimraf/node_modules/lru-cache": {
"version": "11.0.2",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz",
"integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==",
"dev": true,
"license": "ISC",
"engines": {
"node": "20 || >=22"
}
},
"node_modules/rimraf/node_modules/minimatch": { "node_modules/rimraf/node_modules/minimatch": {
"version": "10.0.1", "version": "10.0.1",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz",
@ -7996,23 +7899,6 @@
"node": ">=16 || 14 >=14.17" "node": ">=16 || 14 >=14.17"
} }
}, },
"node_modules/rimraf/node_modules/path-scurry": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz",
"integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
"lru-cache": "^11.0.0",
"minipass": "^7.1.2"
},
"engines": {
"node": "20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/rollup": { "node_modules/rollup": {
"version": "4.27.4", "version": "4.27.4",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.27.4.tgz", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.27.4.tgz",

View File

@ -50,7 +50,7 @@
"fuse.js": "^7.0.0", "fuse.js": "^7.0.0",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"luxon": "^3.5.0", "luxon": "^3.5.0",
"marked": "^15.0.2", "marked": "^15.0.3",
"pg": "^8.13.1", "pg": "^8.13.1",
"pinyin-pro": "^3.26.0", "pinyin-pro": "^3.26.0",
"qrcode-svg": "^1.1.0", "qrcode-svg": "^1.1.0",
@ -68,7 +68,7 @@
"@types/qrcode-svg": "^1.1.5", "@types/qrcode-svg": "^1.1.5",
"@types/unist": "^3.0.3", "@types/unist": "^3.0.3",
"aplayer": "^1.10.1", "aplayer": "^1.10.1",
"astro-uploader": "^1.1.3", "astro-uploader": "^1.2.1",
"bootstrap": "^5.3.3", "bootstrap": "^5.3.3",
"prettier": "^3.4.1", "prettier": "^3.4.1",
"prettier-plugin-astro": "^0.14.1", "prettier-plugin-astro": "^0.14.1",

12
plugins/open-graph.ts Normal file
View File

@ -0,0 +1,12 @@
import type { AstroIntegration, RouteOptions } from 'astro';
export const openGraph = (): AstroIntegration => ({
name: 'Open Graph Generator',
hooks: {
'astro:route:setup': (options: { route: RouteOptions }) => {
if (options.route.component === 'src/pages/images/og/[slug].png.ts') {
options.route.prerender = process.env.BUILD_OPEN_GRAPH === undefined || process.env.BUILD_OPEN_GRAPH === 'true';
}
},
},
});

View File

@ -7,9 +7,6 @@ const fallback = async () =>
headers: { 'Content-Type': 'image/png' }, headers: { 'Content-Type': 'image/png' },
}); });
// This endpoint can be controlled by using environment variable.
export const prerender = import.meta.env.BUILD_OPEN_GRAPH;
export const GET: APIRoute = async ({ params }) => { export const GET: APIRoute = async ({ params }) => {
const slug = params.slug; const slug = params.slug;
if (!slug) { if (!slug) {