Merge branch 'feat/inda-383-daily-stat' into 'main'
[ProtonMail-WebClient.git] / packages / chargebee / vite.config.ts
blobbe9ea0e165e11d3a2c84e7656ab2a60b63750dea
1 import { defineConfig } from 'vite';
2 import mkcert from 'vite-plugin-mkcert';
3 import { viteSingleFile } from 'vite-plugin-singlefile';
5 export default defineConfig({
6     resolve: {
7         alias: [
8             {
9                 // this is required for the SCSS modules
10                 find: /^~(.*)$/,
11                 replacement: '$1',
12             },
13         ],
14     },
15     plugins: [
16         mkcert(),
17         viteSingleFile(),
18         {
19             name: 'html-inject-nonce-into-script-tag',
20             enforce: 'post',
21             /**
22              * Adds template for nonce that can be later replaced by the host of the HTML file.
23              * Backend is supposed to return this file as-is with the exception of replacing "{nonce}"".
24              */
25             transformIndexHtml(html: string) {
26                 const scriptStartRegex = /<script(.*?)/gi;
27                 const nonce = '<script nonce="{nonce}"$1';
29                 return html.replace(scriptStartRegex, nonce);
30             },
31         },
32         {
33             /**
34              * This allows to dynamically replace the JS script on the backend. It's helpful for debugging
35              * in development, especially when the script is being served from a different domain.
36              */
37             name: 'html-replace-chargebee-js-src',
38             enforce: 'post',
39             transformIndexHtml(html: string) {
40                 if (process.env.NODE_ENV !== 'production') {
41                     return html;
42                 }
44                 const srcRegex = /src="(.*?chargebee.*?)"/gi;
45                 const chargebeeTemplate = 'src="{chargebee_js_src}"';
47                 return html.replace(srcRegex, chargebeeTemplate);
48             },
49         },
50     ],
51 });