115 lines
2.7 KiB
JavaScript
115 lines
2.7 KiB
JavaScript
/* eslint-env node */
|
|
import fs from "fs";
|
|
import path from "path";
|
|
import { defineConfig } from "vite";
|
|
import { createVuePlugin } from "vite-plugin-vue2";
|
|
import postcssAutoprefixer from "autoprefixer";
|
|
import postcssCsso from "postcss-csso";
|
|
import postcssDirPseudoClass from "postcss-dir-pseudo-class";
|
|
import postcssLogical from "postcss-logical";
|
|
import pluginRewriteAll from "vite-plugin-rewrite-all";
|
|
|
|
let custom;
|
|
try {
|
|
custom = require("./vite.config.custom.js");
|
|
} catch (err) {
|
|
custom = {};
|
|
}
|
|
|
|
export default defineConfig(({ command }) => {
|
|
// Tell Kirby that we are in dev mode
|
|
if (command === "serve") {
|
|
// Create the flag file on start
|
|
const runningPath = __dirname + "/.vite-running";
|
|
fs.closeSync(fs.openSync(runningPath, "w"));
|
|
|
|
// Delete the flag file on any kind of exit
|
|
for (const eventType of ["exit", "SIGINT", "uncaughtException"]) {
|
|
process.on(eventType, function (err) {
|
|
if (fs.existsSync(runningPath) === true) {
|
|
fs.unlinkSync(runningPath);
|
|
}
|
|
|
|
if (eventType === "uncaughtException") {
|
|
console.error(err);
|
|
}
|
|
|
|
process.exit();
|
|
});
|
|
}
|
|
}
|
|
|
|
const proxy = {
|
|
target: process.env.VUE_APP_DEV_SERVER || "http://sandbox.test",
|
|
changeOrigin: true,
|
|
secure: false
|
|
};
|
|
|
|
return {
|
|
plugins: [createVuePlugin(), pluginRewriteAll()],
|
|
define: {
|
|
// Fix vuelidate error
|
|
"process.env.BUILD": JSON.stringify("production")
|
|
},
|
|
build: {
|
|
minify: "terser",
|
|
cssCodeSplit: false,
|
|
rollupOptions: {
|
|
input: "./src/index.js",
|
|
output: {
|
|
entryFileNames: "js/[name].js",
|
|
chunkFileNames: "js/[name].js",
|
|
assetFileNames: "[ext]/[name].[ext]"
|
|
}
|
|
}
|
|
},
|
|
optimizeDeps: {
|
|
entries: "src/**/*.{js,vue}",
|
|
exclude: [
|
|
"vitest"
|
|
]
|
|
},
|
|
css: {
|
|
postcss: {
|
|
plugins: [
|
|
postcssLogical(),
|
|
postcssDirPseudoClass(),
|
|
postcssCsso(),
|
|
postcssAutoprefixer()
|
|
]
|
|
}
|
|
},
|
|
resolve: {
|
|
alias: [
|
|
{
|
|
find: "vue",
|
|
replacement: "vue/dist/vue.esm.js"
|
|
},
|
|
{
|
|
find: "@",
|
|
replacement: path.resolve(__dirname, "src")
|
|
}
|
|
]
|
|
},
|
|
server: {
|
|
proxy: {
|
|
"/api": proxy,
|
|
"/env": proxy,
|
|
"/media": proxy
|
|
},
|
|
...custom
|
|
},
|
|
test: {
|
|
environment: "jsdom",
|
|
include: ["**/*.test.js"],
|
|
coverage: {
|
|
all: true,
|
|
exclude: ["**/*.e2e.js", "**/*.test.js"],
|
|
extension: ["js", "vue"],
|
|
src: "src",
|
|
reporter: ["text", "lcov"]
|
|
},
|
|
setupFiles: ["vitest.setup.js"]
|
|
}
|
|
};
|
|
});
|