32 lines
		
	
	
		
			940 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			940 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
#!/usr/bin/env node
 | 
						|
 | 
						|
// Imports
 | 
						|
const {readFileSync, writeFileSync} = require('fs');
 | 
						|
const {join, resolve} = require('path');
 | 
						|
 | 
						|
// Constants
 | 
						|
const SRC_DIR = resolve(__dirname, '../src');
 | 
						|
const DIST_DIR = resolve(__dirname, '../dist');
 | 
						|
 | 
						|
// Run
 | 
						|
_main();
 | 
						|
 | 
						|
// Functions - Definitions
 | 
						|
function _main() {
 | 
						|
  const srcIndexPath = join(DIST_DIR, 'index.html');
 | 
						|
  const src404BodyPath = join(SRC_DIR, '404-body.html');
 | 
						|
  const dst404PagePath = join(DIST_DIR, '404.html');
 | 
						|
 | 
						|
  const srcIndexContent = readFileSync(srcIndexPath, 'utf8');
 | 
						|
  const src404BodyContent = readFileSync(src404BodyPath, 'utf8');
 | 
						|
  const dst404PageContent = srcIndexContent.replace(/<body>[\s\S]+<\/body>/, src404BodyContent);
 | 
						|
 | 
						|
  if (dst404PageContent === srcIndexContent) {
 | 
						|
    throw new Error(
 | 
						|
        'Failed to generate \'404.html\'. ' +
 | 
						|
        'The content of \'index.html\' does not match the expected pattern.');
 | 
						|
  }
 | 
						|
 | 
						|
  writeFileSync(dst404PagePath, dst404PageContent);
 | 
						|
}
 |