fs读取目录,拼接文件/图片路径

20 阅读1分钟
const express = require('express');
const sizeOf = require('image-size')

var fs = require('fs');
const app = express()
const port = 3000

function walkSync(currentDirPath, callback) {
    var fs = require('fs'),
        path = require('path');

    fs.readdirSync(currentDirPath, { withFileTypes: true }).forEach(function (dirent) {
        var filePath = path.join(currentDirPath, dirent.name);
        if (dirent.isFile()) {
            callback(filePath, dirent);
        } else if (dirent.isDirectory()) {
            walkSync(filePath, callback);
        }
    });
}
let sprites = [];

function category(type) {
    switch (type) {
        case 'text':
            return '1'; break;
        case 'variety':
            return '2'; break;
        case 'ribbon':
            return '3'; break;
        case 'emoticons':
            return '4'; break;
        case 'cartoon':
            return '5'; break;
        case 'animal':
            return '6'; break;
        case 'food':
            return '7'; break;
        case 'instruct':
            return '8'; break;
        case 'paint':
            return '9'; break;
        case 'graffiti':
            return '10'; break;
    }
}

walkSync('spritesImg', function (filePath, stat) {
    const split = filePath.split('/');
    if (split[2] && split[2] !== '.DS_Store') {
        const dimensions = sizeOf(filePath);
        console.log(dimensions.width, dimensions.height)
        const temp = {
            name: split[2],
            category: category(split[1]),
            file: `https://**/${split[1]}/${split[2]}`,
            thumbUrl: `https://**/${split[1]}/${split[2]}`,
            type: 'image',
            width: dimensions.width,
            height: dimensions.height
        }
        sprites.push(temp);
    }
});

fs.writeFile('./sprites.json', JSON.stringify(sprites), function (err) {
    if (err) { res.status(500).send('Server is error...') }
})

app.listen(port, () => {
    console.log(`Example app listening on port ${port}`)
})