diff --git a/tools/build.mjs b/tools/build.mjs index 24dca50724..8c7f198962 100644 --- a/tools/build.mjs +++ b/tools/build.mjs @@ -1,7 +1,15 @@ #!/usr/bin/env zx import { chalk } from 'zx'; -import { applyPatches, buildAIO, copyLocalizedFiles, copyRobots, modifySitemap, resetBuildDir } from './lib/common.mjs'; +import { + applyPatches, + buildAIO, + copyLocalizedFiles, + remove404HTML, + copyRobots, + modifySitemap, + resetBuildDir, +} from './lib/common.mjs'; try { console.log(chalk.green('==== setup ====')); @@ -38,5 +46,6 @@ async function build() { async function postBuild() { await copyRobots(); + await remove404HTML(); await modifySitemap(); } diff --git a/tools/lib/common.mjs b/tools/lib/common.mjs index 2d39c34ce5..c320677dad 100644 --- a/tools/lib/common.mjs +++ b/tools/lib/common.mjs @@ -1,7 +1,7 @@ import { watch } from 'chokidar'; import { resolve } from 'node:path'; import { $, cd, chalk, glob, within } from 'zx'; -import { initDir, cpRf, exists, sed } from './fileutils.mjs'; +import { initDir, cpRf, exists, sed, rmrf, rename } from './fileutils.mjs'; const rootDir = resolve(__dirname, '../'); const aiojaDir = resolve(rootDir, 'aio-ja'); @@ -102,3 +102,11 @@ export async function modifySitemap() { const sitemapPath = resolve(outDir, 'dist/bin/aio/build/generated/sitemap.xml'); await sed(sitemapPath, 'angular.io', 'angular.jp'); } + +// copy _redirects +export async function remove404HTML() { + await $`chmod -R +w ${resolve(outDir, 'dist/bin/aio/build')}`; + const from = resolve(outDir, 'dist/bin/aio/build/404.html'); + const to = resolve(outDir, 'dist/bin/aio/build/_404.html'); + await rename(from, to); +} diff --git a/tools/lib/fileutils.mjs b/tools/lib/fileutils.mjs index ebf2f99ea2..01ee1b8825 100644 --- a/tools/lib/fileutils.mjs +++ b/tools/lib/fileutils.mjs @@ -26,3 +26,8 @@ export async function sed(path, pattern, replacement) { const newContent = content.replaceAll(pattern, replacement); await writeFile(path, newContent, 'utf-8'); } + +export async function rename(oldPath, newPath) { + await cp(oldPath, newPath); + await rm(oldPath); +}