| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 | 
							- import path from "path";
 
- import vue from "@vitejs/plugin-vue";
 
- import dynamicImport from "vite-plugin-dynamic-import";
 
- import VueI18nPlugin from "@intlify/unplugin-vue-i18n/vite";
 
- import fs from "fs";
 
- const fetchVersionAndGitInfo = () => {
 
- 	const debug = {
 
- 		git: {
 
- 			remote: "",
 
- 			remoteUrl: "",
 
- 			branch: "",
 
- 			latestCommit: "",
 
- 			latestCommitShort: ""
 
- 		},
 
- 		version: ""
 
- 	};
 
- 	try {
 
- 		const packageJson = JSON.parse(
 
- 			fs.readFileSync("./package.json").toString()
 
- 		);
 
- 		console.log(`Musare version: ${packageJson.version}.`);
 
- 		if (process.env.MUSARE_DEBUG_VERSION === "true")
 
- 			debug.version = packageJson.version;
 
- 	} catch (e) {
 
- 		console.log(`Could not get package info: ${e.message}.`);
 
- 	}
 
- 	try {
 
- 		let gitFolder = null;
 
- 		if (fs.existsSync("../.git/HEAD")) gitFolder = "../.git";
 
- 		else if (fs.existsSync(".git/HEAD")) gitFolder = ".git";
 
- 		if (gitFolder) {
 
- 			const headContents = fs
 
- 				.readFileSync(`${gitFolder}/HEAD`)
 
- 				.toString()
 
- 				.replace(/\n/g, "");
 
- 			const branch = /ref: refs\/heads\/([.A-Za-z0-9_-]+)/.exec(
 
- 				headContents
 
- 			)[1];
 
- 			const configContents = fs
 
- 				.readFileSync(`${gitFolder}/config`)
 
- 				.toString()
 
- 				.replace(/\t/g, "")
 
- 				.split("\n");
 
- 			let remote;
 
- 			let remoteUrl;
 
- 			let latestCommit;
 
- 			let latestCommitShort;
 
- 			if (configContents.indexOf(`[branch "${branch}"]`) >= 0) {
 
- 				[, remote] = /remote = (.+)/.exec(
 
- 					configContents[
 
- 						configContents.indexOf(`[branch "${branch}"]`) + 1
 
- 					]
 
- 				);
 
- 				[, remoteUrl] = /url = (.+)/.exec(
 
- 					configContents[
 
- 						configContents.indexOf(`[remote "${remote}"]`) + 1
 
- 					]
 
- 				);
 
- 				latestCommit = fs
 
- 					.readFileSync(`${gitFolder}/refs/heads/${branch}`)
 
- 					.toString()
 
- 					.replace(/\n/g, "");
 
- 				latestCommitShort = latestCommit.substr(0, 7);
 
- 			}
 
- 			console.log(
 
- 				`Git branch: ${remote}/${branch}. Remote url: ${remoteUrl}. Latest commit: ${latestCommit} (${latestCommitShort}).`
 
- 			);
 
- 			if (process.env.MUSARE_DEBUG_GIT_REMOTE === "true")
 
- 				debug.git.remote = remote;
 
- 			if (process.env.MUSARE_DEBUG_GIT_REMOTE_URL === "true")
 
- 				debug.git.remoteUrl = remoteUrl;
 
- 			if (process.env.MUSARE_DEBUG_GIT_BRANCH === "true")
 
- 				debug.git.branch = branch;
 
- 			if (process.env.MUSARE_DEBUG_GIT_LATEST_COMMIT === "true")
 
- 				debug.git.latestCommit = latestCommit;
 
- 			if (process.env.MUSARE_DEBUG_GIT_LATEST_COMMIT_SHORT === "true")
 
- 				debug.git.latestCommitShort = latestCommitShort;
 
- 		} else console.log("Could not find .git folder.");
 
- 	} catch (e) {
 
- 		console.log(`Could not get Git info: ${e.message}.`, e);
 
- 	}
 
- 	return debug;
 
- };
 
- const debug = fetchVersionAndGitInfo();
 
- const htmlPlugin = () => ({
 
- 	name: "html-transform",
 
- 	transformIndexHtml(originalHtml) {
 
- 		let html = originalHtml;
 
- 		html = html.replace(
 
- 			/{{ title }}/g,
 
- 			process.env.MUSARE_SITENAME ?? "Musare"
 
- 		);
 
- 		html = html.replace(/{{ version }}/g, debug.version);
 
- 		html = html.replace(/{{ gitRemote }}/g, debug.git.remote);
 
- 		html = html.replace(/{{ gitRemoteUrl }}/g, debug.git.remoteUrl);
 
- 		html = html.replace(/{{ gitBranch }}/g, debug.git.branch);
 
- 		html = html.replace(/{{ gitLatestCommit }}/g, debug.git.latestCommit);
 
- 		html = html.replace(
 
- 			/{{ gitLatestCommitShort }}/g,
 
- 			debug.git.latestCommitShort
 
- 		);
 
- 		return html;
 
- 	}
 
- });
 
- let server = null;
 
- if (process.env.APP_ENV === "development")
 
- 	server = {
 
- 		host: "0.0.0.0",
 
- 		port: process.env.FRONTEND_DEV_PORT ?? 81,
 
- 		strictPort: true,
 
- 		hmr: {
 
- 			clientPort: process.env.FRONTEND_CLIENT_PORT ?? 80
 
- 		}
 
- 	};
 
- export default {
 
- 	mode: process.env.APP_ENV,
 
- 	root: "src",
 
- 	publicDir: "../dist",
 
- 	base: "/",
 
- 	resolve: {
 
- 		alias: [
 
- 			{
 
- 				find: "@musare_types",
 
- 				replacement: path.resolve(__dirname, "../types")
 
- 			},
 
- 			{
 
- 				find: "@",
 
- 				replacement: path.resolve(__dirname, "src")
 
- 			},
 
- 			{
 
- 				find: "@common",
 
- 				replacement: path.resolve(__dirname, "../common")
 
- 			}
 
- 		],
 
- 		extensions: [
 
- 			".mjs",
 
- 			".js",
 
- 			".mts",
 
- 			".ts",
 
- 			".jsx",
 
- 			".tsx",
 
- 			".json",
 
- 			".vue"
 
- 		]
 
- 	},
 
- 	define: {
 
- 		__VUE_PROD_DEVTOOLS__: process.env.FRONTEND_PROD_DEVTOOLS === "true",
 
- 		MUSARE_SITENAME: JSON.stringify(
 
- 			process.env.MUSARE_SITENAME ?? "Musare"
 
- 		),
 
- 		MUSARE_PRIMARY_COLOR: JSON.stringify(
 
- 			process.env.MUSARE_PRIMARY_COLOR ?? "#03a9f4"
 
- 		),
 
- 		MUSARE_VERSION: JSON.stringify(debug.version),
 
- 		MUSARE_GIT: debug.git,
 
- 		__VUE_I18N_LEGACY_API__: false
 
- 	},
 
- 	plugins: [
 
- 		vue(),
 
- 		htmlPlugin(),
 
- 		dynamicImport(),
 
- 		VueI18nPlugin({ include: path.resolve(__dirname, "src/locales/**") })
 
- 	],
 
- 	css: {
 
- 		preprocessorOptions: {
 
- 			less: {
 
- 				additionalData: `@import "@/styles/variables.less";`
 
- 			}
 
- 		}
 
- 	},
 
- 	server,
 
- 	build: {
 
- 		outDir: "../build"
 
- 	},
 
- 	test: {
 
- 		globals: true,
 
- 		environment: "jsdom",
 
- 		coverage: {
 
- 			all: true,
 
- 			extension: [".ts", ".vue"]
 
- 		},
 
- 		setupFiles: "tests/utils/setup.ts"
 
- 	}
 
- };
 
 
  |