package.json文件
{
"name": "molar-fileflat",
"version": "1.0.0",
"description": "",
"main": "index.js",
"bin": {
"molarflat": "src/bin/flat"
},
"keywords": [],
"devDependencies": {
"inquirer": "^7.3.3",
"commander": "^9.3.0"
},
"author": "",
"license": "ISC"
}
exporter.js
const fs = require('fs')
const path = require('path')
let rootPath
async function isFoldExits(currentPath,exportDir){
const absPath = path.resolve(currentPath,exportDir)
try {
await fs.promises.stat(absPath)
}catch(e){
await fs.promises.mkdir(absPath,{recursive:true})
}
}
function exportFileToDir(filePath,exportDir){
isFoldExits(filePath,exportDir)
rootPath = filePath
function displayFileToDir(filepath,exportDir){
fs.readdir(filepath,function(err,files){
files.forEach((filename)=>{
const fileDir = path.join(filepath,filename)
fs.stat(fileDir,function(err,stats){
const isFile = stats.isFile()
const isDir = stats.isDirectory()
if(isFile){
let destPath = rootPath+`/${exportDir}/`+filename
fs.rename(fileDir,destPath,function(err){
if(err){console.log(err)}
})
}
if(isDir){
displayFileToDir(fileDir,exportDir)
}
})
})
})
}
displayFileToDir(filePath,exportDir)
}
module.exports = {exportFileToDir}
creator.js
const path = require('path')
const fs = require('fs')
const Inquirer = require('inquirer')
const {exportFileToDir} = require('../utils/exporter')
module.exports = async function(exportDirName,options){
const cwd = process.cwd()
const targetDir = path.join(cwd,exportDirName)
if(fs.existsSync(targetDir)){
if(options.force){
await fs.remove(exportDirName)
}else{
let {action} = Inquirer.prompt([
{
name: 'action',
type: 'list',
choices: [
{
name: '覆盖该文件夹',
value: 'overwrite'
},
{
name: '取消操作',
value: 'cancel'
}
]
}
])
if(!action){
return
}else if(action === 'overwrite'){
console.log("\r\n正在移除该文件夹...")
await fs.remove(exportDirName)
}
}
}
exportFileToDir(process.cwd(),exportDirName)
}
#! /usr/bin/env node
const program=require('commander')
const exec = require('child_process').execSync
program.command('export <dir-name>')
.description('该命令将文件平面导出到特定文件夹')
.option('-f,--force','强制将文件导入该目录')
.action((name,cmd)=>{
require('../lib/creator')(name,cmd)
})
program
.on('--help',function(){
console.log()
console.log(`正在运行 <command> --help,查看帮助命令`)
console.log()
})
program
.version(`molarflat@${require('../../package.json').version}`)
.usage(`<command> [options]`)
program.parse(process.argv)