sunmao-ui/packages/vite-plugins/index.js

45 lines
1002 B
JavaScript

const fs = require('fs');
const path = require('path');
function virtualExamplePlugin() {
const virtualFileId = '@example.json';
const exampleDir = path.join(__dirname, '../../examples');
const examples = [];
function walk(dirOrFile, frags) {
if (fs.statSync(dirOrFile).isDirectory()) {
for (const subDir of fs.readdirSync(dirOrFile)) {
walk(path.join(dirOrFile, subDir), frags.concat(subDir));
}
} else {
if (path.extname(dirOrFile) !== '.json') {
return;
}
const value = JSON.parse(fs.readFileSync(dirOrFile, 'utf-8'));
const name = frags.join('/');
examples.push({ name, value });
}
}
walk(exampleDir, []);
return {
name: 'virtual-example-plugin',
resolveId(id) {
if (id === virtualFileId) {
return virtualFileId;
}
},
load(id) {
if (id === virtualFileId) {
return JSON.stringify(examples);
}
},
};
}
module.exports = {
virtualExamplePlugin,
};