admin.aprsto/htdocs/public/esbuild.config.js
2025-02-02 17:15:45 -05:00

63 lines
1.9 KiB
JavaScript

import esbuild from 'esbuild';
import { sassPlugin } from 'esbuild-sass-plugin';
import postcss from 'postcss';
import autoprefixer from 'autoprefixer';
import fs from 'fs-extra';
import path from 'path';
async function copyDependencies() {
const packageJson = await fs.readJson('./package.json');
const dependencies = Object.keys(packageJson.dependencies);
await Promise.all(
dependencies.map(async (dependency) => {
const dependencyPath = path.join('./node_modules', dependency);
const distPath = path.join(dependencyPath, 'dist');
const libPath = path.join('./assets/libs', dependency);
if (await fs.pathExists(distPath)) {
await fs.copy(distPath, libPath);
} else {
await fs.copy(dependencyPath, libPath);
}
})
);
}
esbuild
.build({
logLevel: 'debug',
metafile: true,
entryPoints: ['./assets/scss/styles.scss', './assets/scss/icons.scss'],
outdir: './assets/css',
bundle: true,
// watch: true,
plugins: [
sassPlugin({
async transform(source) {
const { css } = await postcss([autoprefixer]).process(source, { from: undefined });
return css;
},
}),
],
loader: {
".png": "file",
".jpg": "file",
".jpeg": "file",
".svg": "file",
".gif": "file",
".woff": "file",
".ttf": "file",
".eot": "file",
".woff2": "file"
}
})
.then(async () => {
console.log('⚡ Styles & Scripts Compiled! ⚡ ');
await copyDependencies().then(()=>{
console.log('⚡ libs Compiled! ⚡ ');
});
})
.catch(() => process.exit(1));