@exabytellc/utils
Version:
EB react utils to make everything a little easier!
60 lines (51 loc) • 2.01 kB
JavaScript
import fs from "fs";
import path from "path";
export default function assetsFilesPlugin(dirname) {
let config;
return {
name: "vite-assets-files-plugin",
async configResolved(_config) {
config = _config;
},
buildStart() {
const assetDir = path.resolve(config.root, dirname);
if (fs.existsSync(assetDir)) {
const buildDir = path.resolve(config.root, config.publicDir);
if (!fs.existsSync(buildDir)) {
fs.mkdirSync(buildDir, { recursive: true });
}
fs.readdirSync(assetDir).forEach((file) => {
const sourceFile = path.resolve(assetDir, file);
const destinationFile = path.resolve(buildDir, file);
fs.copyFileSync(sourceFile, destinationFile);
console.log(`Copied ${file} to ${buildDir} directory`);
});
} else {
console.warn(`Asset directory "${assetDir}" does not exist.`);
}
},
writeBundle() {
const assetDir = path.resolve(config.root, dirname);
if (fs.existsSync(assetDir)) {
const buildDir = path.resolve(config.root, config.build.outDir);
if (!fs.existsSync(buildDir)) {
fs.mkdirSync(buildDir, { recursive: true });
}
const publicDir = path.resolve(config.root, config.publicDir);
if (!fs.existsSync(publicDir)) {
fs.mkdirSync(publicDir, { recursive: true });
}
fs.readdirSync(assetDir).forEach((file) => {
const sourceFile = path.resolve(assetDir, file);
const destinationFile = path.resolve(buildDir, file);
const destinationFile2 = path.resolve(publicDir, file);
fs.copyFileSync(sourceFile, destinationFile);
fs.copyFileSync(sourceFile, destinationFile2);
console.log(`Copied ${file} to ${buildDir} directory`);
});
} else {
console.warn(`Asset directory "${assetDir}" does not exist.`);
}
},
};
}