* replace Bootstrap-based styling with Tailwind CSS * update theme compatibility for latest Hugo version * refactor templates and partials * fix outdated code and broken components * improve project structure and maintainability * optimize styling and frontend build setup
123 lines
3.8 KiB
JavaScript
123 lines
3.8 KiB
JavaScript
import fs from "node:fs";
|
|
import path from "node:path";
|
|
|
|
// Paths
|
|
const notFoundPage = "layouts/404.en.html";
|
|
const menusPath = "exampleSite/config/_default/menus.en.toml";
|
|
const languagesPath = "exampleSite/config/_default/languages.toml";
|
|
const hugoConfigPath = "exampleSite/hugo.toml";
|
|
const developmentDir = "exampleSite/config/development";
|
|
const i18nDir = "exampleSite/i18n";
|
|
const englishContentDir = "exampleSite/content/english";
|
|
const targetContentDir = "exampleSite/content";
|
|
|
|
// Helper function to remove directory recursively
|
|
const removeDirRecursive = (dirPath) => {
|
|
if (fs.existsSync(dirPath)) {
|
|
fs.rmSync(dirPath, { recursive: true, force: true });
|
|
console.log(`✓ Removed directory: ${dirPath}`);
|
|
} else {
|
|
console.log(`✗ Directory not found: ${dirPath}`);
|
|
}
|
|
};
|
|
|
|
// Helper function to remove file
|
|
const removeFile = (filePath) => {
|
|
if (fs.existsSync(filePath)) {
|
|
fs.unlinkSync(filePath);
|
|
console.log(`✓ Removed file: ${filePath}`);
|
|
} else {
|
|
console.log(`✗ File not found: ${filePath}`);
|
|
}
|
|
};
|
|
|
|
// Helper function to rename file
|
|
const renameFile = (oldPath, newPath) => {
|
|
if (fs.existsSync(oldPath)) {
|
|
fs.renameSync(oldPath, newPath);
|
|
console.log(`✓ Renamed: ${oldPath} → ${newPath}`);
|
|
} else {
|
|
console.log(`✗ File not found: ${oldPath}`);
|
|
}
|
|
};
|
|
|
|
// Helper function to move directory contents
|
|
const moveDirContents = (sourceDir, targetDir) => {
|
|
if (!fs.existsSync(sourceDir)) {
|
|
console.log(`✗ Source directory not found: ${sourceDir}`);
|
|
return;
|
|
}
|
|
|
|
// Ensure target directory exists
|
|
if (!fs.existsSync(targetDir)) {
|
|
fs.mkdirSync(targetDir, { recursive: true });
|
|
}
|
|
|
|
const items = fs.readdirSync(sourceDir);
|
|
|
|
items.forEach((item) => {
|
|
const sourcePath = path.join(sourceDir, item);
|
|
const targetPath = path.join(targetDir, item);
|
|
|
|
fs.renameSync(sourcePath, targetPath);
|
|
console.log(`✓ Moved: ${sourcePath} → ${targetPath}`);
|
|
});
|
|
|
|
// Remove the now-empty source directory
|
|
fs.rmdirSync(sourceDir);
|
|
console.log(`✓ Removed empty directory: ${sourceDir}`);
|
|
};
|
|
|
|
// Main function
|
|
const removeMultilang = () => {
|
|
console.log("Starting multilanguage removal process...\n");
|
|
|
|
// 1. Remove exampleSite/config/development folder
|
|
console.log("1. Removing development folder...");
|
|
removeDirRecursive(developmentDir);
|
|
console.log("");
|
|
|
|
// 2. Remove exampleSite/i18n folder
|
|
console.log("2. Removing i18n folder...");
|
|
removeDirRecursive(i18nDir);
|
|
console.log("");
|
|
|
|
// 3. Remove languagesPath file
|
|
console.log("3. Removing languages.toml file...");
|
|
removeFile(languagesPath);
|
|
console.log("");
|
|
|
|
// 4. Rename menusPath and notFoundPage
|
|
console.log("4. Renaming files (removing .en)...");
|
|
renameFile(menusPath, menusPath.replace(".en.", "."));
|
|
renameFile(notFoundPage, notFoundPage.replace(".en.", "."));
|
|
console.log("");
|
|
|
|
// 5. Remove language configuration from hugo.toml
|
|
console.log("5. Updating hugo.toml...");
|
|
if (fs.existsSync(hugoConfigPath)) {
|
|
let hugoConfig = fs.readFileSync(hugoConfigPath, "utf-8");
|
|
|
|
// Remove the language configuration block
|
|
const languageConfigRegex =
|
|
/# disable language\ndisableLanguages = \[\n\].*?defaultContentLanguageInSubdir = false\n/s;
|
|
hugoConfig = hugoConfig.replace(languageConfigRegex, "");
|
|
|
|
fs.writeFileSync(hugoConfigPath, hugoConfig);
|
|
console.log(`✓ Updated: ${hugoConfigPath}`);
|
|
} else {
|
|
console.log(`✗ File not found: ${hugoConfigPath}`);
|
|
}
|
|
console.log("");
|
|
|
|
// 6. Move all folders and files from exampleSite/content/english to exampleSite/content
|
|
console.log("6. Moving content from english folder to content folder...");
|
|
moveDirContents(englishContentDir, targetContentDir);
|
|
console.log("");
|
|
|
|
console.log("✓ Multilanguage removal completed successfully!");
|
|
};
|
|
|
|
// Run the script
|
|
removeMultilang();
|