Skip to content

Commit

Permalink
feat: update env script
Browse files Browse the repository at this point in the history
  • Loading branch information
TinsFox committed May 8, 2024
1 parent e108617 commit 8b3d62b
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 1 deletion.
2 changes: 1 addition & 1 deletion web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"lint": "next lint",
"fix": "next lint --fix",
"eslint-fix": "eslint --fix",
"prepare": "cp .env.example .env && cd ../ && node -e \"if (process.env.NODE_ENV !== 'production'){process.exit(1)} \" || husky install ./web/.husky",
"prepare": "node ./scripts/update-env.mjs && cd ../ && node -e \"if (process.env.NODE_ENV !== 'production'){process.exit(1)} \" || husky install ./web/.husky",
"gen-icons": "node ./app/components/base/icons/script.js",
"uglify-embed": "node ./bin/uglify-embed",
"check-i18n": "node ./i18n/script.js"
Expand Down
39 changes: 39 additions & 0 deletions web/scripts/update-env.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import * as fs from 'node:fs'

function parseEnvFile(contents) {
return contents.split('\n').reduce((acc, line) => {
const [key, value] = line.split('=')
if (key) { // 确保键存在,即使值为空
acc.set(key.trim(), value === undefined ? '' : value.trim())
}
return acc
}, new Map())
}

function updateEnvironmentFile() {
const examplePath = '.env.example'
const envPath = '.env'

const exampleContents = fs.readFileSync(examplePath, 'utf-8')
const envContents = fs.existsSync(envPath) ? fs.readFileSync(envPath, 'utf-8') : ''

const exampleConfig = parseEnvFile(exampleContents)
const envConfig = parseEnvFile(envContents)

// 兼容 key 存在但 value 为空的情况
exampleConfig.forEach((value, key) => {
if (!envConfig.has(key)) { // 如果 .env 中没有该 key
envConfig.set(key, value) // 添加 key,即使其 value 为空
}
})

// 生成新的 .env 内容
const newEnvContents = Array.from(envConfig.entries())
.map(([key, value]) => `${key}=${value}`)
.join('\n')

fs.writeFileSync(envPath, newEnvContents)
console.log('.env file has been updated')
}

updateEnvironmentFile()

0 comments on commit 8b3d62b

Please sign in to comment.