Files
jira/vite.config.js
Bastien COIGNOUX 7cd2d6dc40 init
2026-04-24 07:41:55 +02:00

64 lines
2.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { defineConfig, loadEnv } from 'vite'
import react from '@vitejs/plugin-react'
import tailwindcss from '@tailwindcss/vite'
/** @param {string | undefined} domain */
function jiraOrigin(domain) {
if (!domain?.trim()) return null
const d = domain.trim().replace(/\/$/, '')
if (d.startsWith('http://') || d.startsWith('https://')) return d
if (d.includes('atlassian.net')) return `https://${d.replace(/^https?:\/\//, '')}`
return `https://${d}.atlassian.net`
}
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd(), '')
const origin = jiraOrigin(env.JIRA_DOMAIN)
return {
define: {
__JIRA_ORIGIN__: JSON.stringify(origin ?? ''),
},
plugins: [react(), tailwindcss()],
server: {
proxy: origin
? {
'/jira-api': {
target: origin,
changeOrigin: true,
secure: true,
rewrite: (path) => path.replace(/^\/jira-api/, ''),
configure: (proxy) => {
proxy.on('proxyReq', (proxyReq) => {
// Évite quun Authorization invalide (extension, cache) écrase le Basic Jira
proxyReq.removeHeader('authorization')
proxyReq.removeHeader('cookie')
// Jira Cloud : contrôle XSRF — il faut Origin OU X-Requested-With.
// Le navigateur → Vite est souvent same-origin sans en-tête Origin ; sans cela, 403.
proxyReq.setHeader('X-Requested-With', 'XMLHttpRequest')
proxyReq.setHeader('Origin', origin)
proxyReq.setHeader('Referer', `${origin}/`)
const email = env.JIRA_EMAIL?.trim()
const apiKey = env.JIRA_API_KEY?.trim()
if (email && apiKey) {
const basic = Buffer.from(`${email}:${apiKey}`, 'utf8').toString(
'base64',
)
proxyReq.setHeader('Authorization', `Basic ${basic}`)
} else {
console.warn(
'[vite] Proxy Jira : JIRA_EMAIL ou JIRA_API_KEY manquant dans .env — la requête partira sans authentification.',
)
}
proxyReq.setHeader('Accept', 'application/json')
})
},
},
}
: {},
},
}
})