115 lines
4.5 KiB
JavaScript
115 lines
4.5 KiB
JavaScript
|
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]`;
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
};
|
||
|
});
|