开发node文件相关的操作
完整代码看这里。
欢迎稍后收看我的下一篇文章,开发环境搭建。
首先在根目录新建一个存放node脚本的文件夹,然后新建一个createNew.js
,来实现指定位置生成markdown文件。
这个文件中需要引用额外的包有inquirer
来实现一些命令行输入操作,以及moment来处理一些时间的操作。
yarn add moment
,yarn add inquirer
来完成操作。
下面做一些关键代码的粘贴:
前面是一些规则和模版的声明,不赘述,感兴趣的可以尝试输入一下违规的字符看一下效果。
inquirer
.prompt(questions)
.then(rst => { //获取用户的输入
const {post_name,tags} = rst;
// console.log('name',post_name,'tag',tags)
let newPost = JSON_TEMPLATE;
JSON_TEMPLATE.tags = [...new Set(tags.split(','))];
if(!fs.existsSync('src/articles/'+tags)){
fs.mkdir('src/articles/'+tags,(err,rst)=>{
if(err){
console.log('创建一级文章目录报错',err);
return;
}
if(!fs.existsSync('src/articles/'+tags+'/'+post_name)){
generateSecLevel(tags,post_name)
}else{
console.log('文章目录已经存在,请重新创建')
}
})
}else{
if(!fs.existsSync('src/articles/'+tags+'/'+post_name)){
generateSecLevel(tags,post_name)
}else{
console.log('文章目录已经存在,请确认后创建')
}
}
})
generateSecLevel = (tags,post_name) =>{
fs.mkdir('src/articles/'+tags+'/'+post_name,(err,rst)=>{
if(err){
console.log('创建二级文章目录报错',err);
return;
}
console.log('创建文章目录成功');
fs.writeFile('src/articles/' + tags + '/' + post_name + '/' + 'main.md', '在此写入您的文章', (err =>{
if(err){
console.log(err);
return;
}
console.log('创建文章成功,请开始你的表演。')
}))
fs.writeFile('src/articlesHelper/fileMap.json',JSON.stringify(tools.generateFileMap('src/articles/')),(err => {
if(err){
console.log(err);
return
}
console.log('更新文件地图成功');
}))
fs.writeFile('src/articles/'+tags+'/'+post_name+'/'+'basicInfo.json',JSON.stringify({
time:JSON_TEMPLATE.createTime
}),(err =>{
if(err){
console.log(err)
return
}
console.log('创建基础信息成功');
}))
copyTemplate('src/articlesHelper/exposerTemplate.js', 'src/articles/' + tags + '/' + post_name + '/' + 'index.js');
})
}
copyTemplate = (come,to) => {
let rs = fs.createReadStream(come)
let ws = fs.createWriteStream(to);
rs.pipe(ws);
}
prompt
指令有两个步骤,首先输入文章的名字,然后给文章加一个标签。这个作为文章的一级目录,也就是同样标签的文章会被初始化到一个文件夹下面。并且代码中做了检测,如果新建的文章名称已经存在了,会提示重新创建。generateSecLevel
这个方法用来创建新的文章,文章名称默认main.md
,大家可以看到这里有一个更新文件地图的操作,这是通过读取本地aritcles
文件夹,生成一个文件目录的json文件,方便读取。
最后一个函数,是拷贝一个模版到生成文章的目录,统一的规范,可以自己定义。
当然了,看到代码以后你会发现第一级目录,也就是articles并没有创建,所以要正常使用功能还是要自己在src下面创建一个articles文件夹的。
最后一步:大家可以看到package.json
文件,命令都是从这个文件里面写的,现在要在scripts中,添加
"postArticle": "node nodeScripts/createNew.js"
然后运行命令,yarn postArticle就可以自动执行createNew.js这个脚本了。
给一个创建成功的截图:
生成的文件夹共三个文件,第一个两个通过createNew
生成的,还有一个是引入进来的。
现在,正在步入佳境。
欢迎收看我的下一篇文章,开发环境搭建。