diff --git a/website/package.json b/website/package.json index a05caa50..493f96c9 100644 --- a/website/package.json +++ b/website/package.json @@ -4,7 +4,9 @@ "private": true, "scripts": { "docusaurus": "docusaurus", + "prestart": "node scripts/ensure-popular-issues.mjs", "start": "docusaurus start", + "prebuild": "node scripts/ensure-popular-issues.mjs", "build": "docusaurus build", "swizzle": "docusaurus swizzle", "deploy": "docusaurus deploy", diff --git a/website/scripts/ensure-popular-issues.mjs b/website/scripts/ensure-popular-issues.mjs new file mode 100644 index 00000000..f71f3bc3 --- /dev/null +++ b/website/scripts/ensure-popular-issues.mjs @@ -0,0 +1,32 @@ +// Copyright 2025 Enactic, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Ensure static/data/popular-issues.json exists. +// +// The GitHubIssues component imports this file at build time, so the bundle +// fails to compile when it is missing. The file is generated by +// `npm run fetch-popular-issues` (used in CI), but that requires a GitHub +// token, so it is not available on a fresh checkout. This writes an empty +// fallback when the file is absent, letting `start` and `build` run without +// it. Existing data is never overwritten. + +import { existsSync, mkdirSync, writeFileSync } from 'node:fs'; +import { dirname } from 'node:path'; + +const target = 'static/data/popular-issues.json'; + +if (!existsSync(target)) { + mkdirSync(dirname(target), { recursive: true }); + writeFileSync(target, '[]\n'); +}