shopify-accelerate
Version:
Shopify Theme development with full Typescript Support
49 lines (42 loc) • 1.51 kB
text/typescript
import chalk from "chalk";
import fs from "fs";
import path from "path";
import { config, root_dir } from "../../shopify-accelerate";
import { deleteFile, writeCompareFile, writeOnlyNew } from "../utils/fs";
export const generateAssetFiles = () => {
const { theme_path, sources, targets, delete_external_assets, ignore_assets } = config;
sources.assets.forEach((file) => {
const fileName = file.split(/[\\/]/gi).at(-1);
const targetPath = path.join(process.cwd(), theme_path, "assets", fileName);
const rawContent = fs.readFileSync(file, { encoding: "utf-8" });
if (ignore_assets?.includes(targetPath.split(/[/\\]/)?.at(-1))) {
console.log(
`[${chalk.gray(new Date().toLocaleTimeString())}]: ${chalk.greenBright(
`Ignored: ${targetPath.replace(process.cwd(), "")}`
)}`
);
writeOnlyNew(targetPath, rawContent);
} else {
writeCompareFile(targetPath, rawContent);
}
});
if (delete_external_assets) {
targets.assets.forEach((file) => {
const fileName = file.split(/[\\/]/gi).at(-1);
const targetFile = sources.assets.find((sourcePath) =>
sourcePath.split(/[\\/]/gi).at(-1).includes(fileName)
);
if (
/^replo/gi.test(fileName) ||
/^pandectes/gi.test(fileName) ||
/^locksmith/gi.test(fileName) ||
/^shogun/gi.test(fileName)
) {
return;
}
if (!targetFile) {
deleteFile(path.join(process.cwd(), file));
}
});
}
};