/* Copyright 2025 New Vector Ltd. SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial Please see LICENSE files in the repository root for full details. */ import path from "node:path"; import { fileURLToPath } from "node:url"; import { defineConfig } from "vitest/config"; import dts from "unplugin-dts/vite"; import externalGlobals from "rollup-plugin-external-globals"; import packageJson from "./package.json" with { type: "json" }; export default defineConfig({ build: { lib: { entry: fileURLToPath(import.meta.resolve("./src/index.ts")), name: "element-web-plugin-engine", fileName: "element-web-plugin-engine", }, outDir: "lib", target: "esnext", sourcemap: true, }, plugins: [ dts({ bundleTypes: { configPath: "./api-extractor.json", invokeOptions: { // Always overwrite element-web-module-api.api.md localBuild: true, // oxlint-disable-next-line unicorn/prefer-module typescriptCompilerFolder: path.resolve(require.resolve("@typescript/old"), "../.."), }, }, }), externalGlobals({ // Reuse React from the host app react: "window.React", }), ], define: { // We cannot use `process.env.npm_package_version` as when building element-web with module-api set to `workspace` // this would contain the version of element-web rather than that of the module-api. __VERSION__: JSON.stringify(packageJson.version), // Use production mode for the build as it is tested against production builds of Element Web, // this is required for React JSX versions to be compatible. process: { env: { NODE_ENV: "production" } }, }, });