-
-
Notifications
You must be signed in to change notification settings - Fork 3
/
vite-plugin-copy-images.js
36 lines (32 loc) · 1.01 KB
/
vite-plugin-copy-images.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import fs from "fs";
import path from "path";
export default function copyImages() {
return {
name: "copy-images",
writeBundle(object, bundle) {
const blogDir = path.join(process.cwd(), "src", "routes", "blog");
for (const file of Object.values(bundle)) {
if (
file.fileName.endsWith(".html") &&
file.fileName.startsWith("blog/")
) {
const dirName = path.dirname(file.fileName);
const fullDirPath = path.join(blogDir, dirName.split("blog/")[1]);
const media = fs
.readdirSync(fullDirPath)
.filter((file) =>
/\.(png|jpe?g|gif|svg|webp|webm|mp4|ogv|mp3|ogg)$/i.test(file),
);
for (const medium of media) {
const content = fs.readFileSync(path.join(fullDirPath, medium));
this.emitFile({
type: "asset",
fileName: path.join(dirName, medium),
source: content,
});
}
}
}
},
};
}