element-call-Github/vite.config.js

110 lines
3.0 KiB
JavaScript
Raw Permalink Normal View History

2021-07-17 05:38:44 +08:00
/*
Copyright 2021-2024 New Vector Ltd.
2021-07-17 05:38:44 +08:00
SPDX-License-Identifier: AGPL-3.0-only
Please see LICENSE in the repository root for full details.
2021-07-17 05:38:44 +08:00
*/
2021-12-18 08:30:10 +08:00
import { defineConfig, loadEnv } from "vite";
import { compression } from "vite-plugin-compression2";
2021-08-20 03:11:12 +08:00
import svgrPlugin from "vite-plugin-svgr";
2022-02-03 13:48:44 +08:00
import htmlTemplate from "vite-plugin-html-template";
import { codecovVitePlugin } from "@codecov/vite-plugin";
2023-09-19 00:02:35 +08:00
import { sentryVitePlugin } from "@sentry/vite-plugin";
import react from "@vitejs/plugin-react";
import basicSsl from "@vitejs/plugin-basic-ssl";
2021-07-17 05:22:03 +08:00
// https://vitejs.dev/config/
2021-12-18 08:30:10 +08:00
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd());
const plugins = [
react(),
basicSsl(),
svgrPlugin({
svgrOptions: {
// This enables ref forwarding on SVGR components, which is needed, for
// example, to make tooltips on icons work
ref: true,
},
}),
htmlTemplate.default({
data: {
title: env.VITE_PRODUCT_NAME || "Element Call",
},
}),
codecovVitePlugin({
enableBundleAnalysis: process.env.CODECOV_TOKEN !== undefined,
bundleName: "element-call",
uploadToken: process.env.CODECOV_TOKEN,
}),
compression({
exclude: [/config.json/],
}),
];
if (
process.env.SENTRY_ORG &&
process.env.SENTRY_PROJECT &&
process.env.SENTRY_AUTH_TOKEN &&
process.env.SENTRY_URL
) {
plugins.push(
sentryVitePlugin({
include: "./dist",
release: process.env.VITE_APP_VERSION,
2023-10-11 22:42:04 +08:00
}),
);
}
2021-12-18 08:30:10 +08:00
return {
server: {
port: 3000,
},
2022-04-28 03:11:59 +08:00
build: {
sourcemap: true,
2024-11-14 18:53:43 +08:00
rollupOptions: {
output: {
assetFileNames: ({ originalFileNames }) => {
if (originalFileNames) {
for (const name of originalFileNames) {
// Custom asset name for locales to include the locale code in the filename
const match = name.match(/locales\/([^/]+)\/(.+)\.json$/);
if (match) {
const [, locale, filename] = match;
return `assets/${locale}-${filename}-[hash].json`;
}
}
}
// Default naming fallback
return "assets/[name]-[hash][extname]";
},
},
},
2022-04-28 03:11:59 +08:00
},
plugins,
2021-12-18 08:30:10 +08:00
resolve: {
2022-07-15 23:24:38 +08:00
alias: {
// matrix-widget-api has its transpiled lib/index.js as its entry point,
// which Vite for some reason refuses to work with, so we point it to
// src/index.ts instead
"matrix-widget-api": "matrix-widget-api/src/index.ts",
},
2022-01-22 05:21:23 +08:00
dedupe: [
"react",
"react-dom",
"matrix-js-sdk",
"react-use-measure",
2023-12-02 06:43:09 +08:00
// These packages modify the document based on some module-level global
// state, and don't play nicely with duplicate copies of themselves
// https://github.com/radix-ui/primitives/issues/1241#issuecomment-1847837850
"@radix-ui/react-focus-guards",
"@radix-ui/react-dismissable-layer",
2022-01-22 05:21:23 +08:00
],
2021-10-01 02:27:44 +08:00
},
2021-12-18 08:30:10 +08:00
};
2021-07-17 05:38:44 +08:00
});