FleetCart/vite.config.js

115 lines
4.5 KiB
JavaScript
Raw Normal View History

2023-12-03 14:07:47 +00:00
import { defineConfig } from "vite";
import laravel from "laravel-vite-plugin";
import vue from "@vitejs/plugin-vue2";
import glob from "glob";
import copy from "rollup-plugin-copy";
import path from "path";
import autoprefixer from "autoprefixer";
import postcssRTLCSS from "postcss-rtlcss";
const FLEETCART_VERSION = "4.0.1";
const ASSET_PATHS = [
"Modules/*/Resources/assets/admin/sass/main.scss",
"Modules/*/Resources/assets/admin/js/main.js",
"Modules/*/Resources/assets/admin/js/create.js",
"Modules/*/Resources/assets/admin/js/edit.js",
"Themes/Storefront/resources/assets/*/sass/main.scss",
"Themes/Storefront/resources/assets/*/js/main.js",
];
export default defineConfig(({ command, mode }) => {
return {
plugins: [
laravel({
input: [
"resources/sass/install/main.scss",
"resources/js/install/main.js",
"Modules/Admin/Resources/assets/sass/main.scss",
"Modules/Admin/Resources/assets/js/main.js",
"Modules/Admin/Resources/assets/js/app.js",
"Modules/Admin/Resources/assets/sass/dashboard.scss",
"Modules/Admin/Resources/assets/js/dashboard.js",
"Modules/User/Resources/assets/admin/sass/auth.scss",
"Modules/User/Resources/assets/admin/js/auth.js",
"Modules/Order/Resources/assets/admin/sass/print.scss",
"Themes/Storefront/resources/assets/public/js/vendors/flatpickr.js",
...glob.sync(`{${ASSET_PATHS.join(",")}}`),
],
refresh: true,
}),
vue({
template: {
transformAssetUrls: {
base: null,
includeAbsolute: false,
},
},
}),
copy({
targets: [
{
src: [
"resources/images/favicon.png",
"node_modules/jquery/dist/jquery.min.js",
"Modules/Admin/node_modules/tinymce",
"Modules/Admin/Resources/assets/images/*",
"Modules/Category/node_modules/jstree/dist/jstree.min.js",
"Themes/Storefront/node_modules/slick-carousel/slick/slick.min.js",
"Themes/Storefront/node_modules/bootstrap/dist/js/bootstrap.min.js",
"Themes/Storefront/resources/assets/public/images/*",
],
dest: "public/build/assets",
},
{
src: "Themes/Storefront/node_modules/line-awesome/dist/line-awesome/fonts",
dest: ["Themes/Storefront/resources/assets/public"],
},
],
copyOnce: true,
hook: command === "build" ? "writeBundle" : "buildStart",
}),
],
css: {
postcss: {
plugins: [
autoprefixer(),
postcssRTLCSS({
ltrPrefix: ".ltr",
rtlPrefix: ".rtl",
processKeyFrames: true,
}),
],
},
},
resolve: {
alias: {
vue: path.resolve(
__dirname,
"./node_modules/vue/dist/vue.esm.js"
),
"@admin": path.resolve(
__dirname,
"./Modules/Admin/Resources/assets"
),
"@modules": path.resolve(__dirname, "./Modules"),
},
},
build: {
sourcemap: mode === "production",
chunkSizeWarningLimit: 1000,
rollupOptions: {
output: {
globals: {
jquery: "jQuery",
},
entryFileNames: `assets/[name]-[hash]-v${FLEETCART_VERSION}.js`,
chunkFileNames: `assets/[name]-[hash]-v${FLEETCART_VERSION}.js`,
assetFileNames: function () {
return `assets/[name]-[hash]-v${FLEETCART_VERSION}.[ext]`;
},
},
},
},
};
});