* 环境变量处理工具函数
*/
import fs from 'node:fs'
* 更新环境变量,如果变量不存在或值为false则设置为true
* @param {string} content - 环境变量文件内容
* @param {string} key - 环境变量名
* @returns {string} - 更新后的内容
*/
export function ensureEnvVarEnabled(content, key, value = 'true') {
const regex = new RegExp(`${key}\\s*=\\s*(.*)`, 'm')
const match = content.match(regex)
if (!match) {
return `${content}\n${key}=${value}`
} else if (match[1].trim() !== value) {
return content.replace(regex, `${key}=${value}`)
}
return content
}
* 更新环境变量中的CDN域名
* @param {string} content - 环境变量文件内容
* @param {string} cdnDomain - CDN域名
* @returns {string} - 更新后的内容
*/
export function updateCdnDomain(content, cdnDomain) {
const regex = /VITE_CDN_DOMAIN\s*=\s*(.*)/m
const match = content.match(regex)
if (!match) {
return `${content}\nVITE_CDN_DOMAIN=${cdnDomain}`
} else {
return content.replace(regex, `VITE_CDN_DOMAIN=${cdnDomain}`)
}
}
* 备份环境变量文件
* @param {string} envFilePath - 环境变量文件路径
* @returns {void}
*/
export function backupEnvFile(envFilePath) {
if (fs.existsSync(envFilePath)) {
const backupPath = envFilePath + '.bak'
fs.copyFileSync(envFilePath, backupPath)
}
}
* 恢复环境变量文件
* @param {string} envFilePath - 环境变量文件路径
* @returns {void}
*/
export function restoreEnvFile(envFilePath) {
const backupPath = envFilePath + '.bak'
if (fs.existsSync(backupPath)) {
fs.copyFileSync(backupPath, envFilePath)
fs.unlinkSync(backupPath)
}
}