83 lines
2.0 KiB
JavaScript
83 lines
2.0 KiB
JavaScript
// 生成或删除页面(分类页、标签页、归档页...)
|
||
|
||
const fs = require('fs'); // 文件模块
|
||
const path = require('path'); // 路径模块
|
||
const chalk = require('chalk') // 命令行打印美化
|
||
const { type } = require('./modules/fn');
|
||
const log = console.log
|
||
|
||
function createPage (sourceDir, page) {
|
||
const dirPath = path.join(sourceDir, '@pages') // 生成的文件夹路径
|
||
|
||
// 文件夹不存在时
|
||
if (!fs.existsSync(dirPath)) {
|
||
fs.mkdirSync(dirPath) // 创建文件夹
|
||
}
|
||
|
||
const pagePath = path.join(dirPath, `${page}.md`) // 生成的文件路径
|
||
|
||
// 文件已经存在时跳出
|
||
if (fs.existsSync(pagePath)) {
|
||
return
|
||
}
|
||
|
||
// 注意:反引号字符串的格式会映射到文件
|
||
let content = ''
|
||
if (page.indexOf('categories') > -1) {
|
||
content = `---
|
||
categoriesPage: true
|
||
title: 分类
|
||
permalink: /categories/
|
||
article: false
|
||
---`
|
||
} else if (page.indexOf('tags') > -1) {
|
||
content = `---
|
||
tagsPage: true
|
||
title: 标签
|
||
permalink: /tags/
|
||
article: false
|
||
---`
|
||
} else if (page.indexOf('archives') > -1) {
|
||
content = `---
|
||
archivesPage: true
|
||
title: 归档
|
||
permalink: /archives/
|
||
article: false
|
||
---`
|
||
}
|
||
|
||
if (content) {
|
||
fs.writeFileSync(pagePath, content)
|
||
log(chalk.blue('tip ') + chalk.green(`create page(生成页面): ${pagePath}`))
|
||
}
|
||
}
|
||
|
||
// 删除页面文件
|
||
function deletePage (sourceDir, page) {
|
||
const dirPath = path.join(sourceDir, '@pages') // 文件夹路径
|
||
const pagePath = path.join(dirPath, `${page}.md`) // 文件路径
|
||
|
||
// 文件是否存在
|
||
if (fs.existsSync(pagePath)) {
|
||
fs.unlinkSync(pagePath)
|
||
log(chalk.blue('tip ') + chalk.green(`delete page(删除页面): ${pagePath}`))
|
||
}
|
||
deleteDir(dirPath)
|
||
}
|
||
|
||
// 删除文件夹
|
||
function deleteDir (dirPath) {
|
||
if (fs.existsSync(dirPath)) {
|
||
const files = fs.readdirSync(dirPath)
|
||
if (type(files) === 'array' && files.length === 0) {
|
||
fs.rmdirSync(dirPath)
|
||
log(chalk.blue('tip ') + chalk.green(`delete dir(删除目录): ${dirPath}`))
|
||
}
|
||
}
|
||
}
|
||
|
||
module.exports = {
|
||
createPage,
|
||
deletePage
|
||
}
|