63 lines
1.9 KiB
JavaScript
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));
|