suxiang

const fs = require('fs');

Usage no npm install needed!

<script type="module">
  import suxiang from 'https://cdn.skypack.dev/suxiang';
</script>

README

文件夹转json

const fs = require('fs');

function dirtojson(dir) {

    let stat = fs.statSync(dir);
    if (stat.isFile()) {
        return {
            name: dir,
            isfile: true,
            content: fs.readFileSync(dir, 'utf8'),
            ext: dir.slice(dir.lastIndexOf('.')),

        }
    } else {
        return {
            name: dir,
            isfile: false,
            content: fs.readdirSync(dir).map(item => {
                return dirtojson(dir + '/' + item);
            })
        }
    }
}
let data = JSON.stringify(dirtojson('2'));
fs.writeFileSync('index.json', data);

json转文件夹

const fs = require("fs");

function JsonToDir(data) {
    if (data.isFile) {
        // 是文件
        fs.writeFileSync(data.name, data.content)
    } else {
        // 是文件夹
        fs.mkdirSync(data.name);
        // 循环数组
        data.children.forEach(item => {
            // 递归
            JsonToDir(item)
        })
    }
}
let data = JSON.parse(fs.readFileSync("data.json"))
JsonToDir(data)

赋值文件夹

const fs = require('fs');

function copyDir(d1, d2) {
    if (!fs.existsSync(d2)) {
        fs.mkdirSync(d2);
    }
    let arr = fs.readdirSync(d1);
    arr.forEach(item => {
        let dird1 = d1 + '/' + item;
        let dird2 = d2 + '/' + item;
        if (fs.statSync(dird1).isFile()) {
            fs.copyFileSync(dird1, dird2);
        } else {
            copyDir(dird1, dird2);
        }
    })
}
copyDir('deom', 'deom1');
const fs = require("fs");


// 删除文件夹
function deleteDir(dirname) {
    // 1.读取文件夹子目录
    let arr = fs.readdirSync(dirname)
    // 2.遍历子目录
    arr.forEach(item => {
        // 2-1拼接目录 保证目录正确性
        item = dirname + "/" + item
        // 2-2 判断是文件还是文件夹
        if (fs.statSync(item).isFile()) {
            // 2-3 删除文件
            fs.unlinkSync(item)
        } else {
            // 2-4 递归删除文件夹
            deleteDir(item)
        }
    })
    // 3.删除空的文件夹
    // 因为上面的forEach执行完了 文件夹是空的
    fs.rmdirSync(dirname)
}



deleteDir("demo")