meet/scripts/prebuild.js
2023-08-03 18:26:29 -03:00

67 lines
2.0 KiB
JavaScript

/* eslint-disable */
const fs = require('fs')
const dotenv = require('dotenv')
dotenv.config()
let ENV_CONTENT = {}
// read files
if (fs.existsSync('.env')) {
Object.assign(ENV_CONTENT, dotenv.parse(fs.readFileSync('.env')))
}
const packageJson = JSON.parse(fs.readFileSync('./package.json').toString())
const publicPackageJson = JSON.parse(fs.readFileSync('./public/package.json').toString())
// set version
ENV_CONTENT['REACT_APP_WEBSITE_VERSION'] = packageJson.version
publicPackageJson.version = packageJson.version
// set public url
Object.assign(ENV_CONTENT, getPublicUrls())
packageJson.homepage = ENV_CONTENT['VITE_BASE_URL']
publicPackageJson.homepage = packageJson.homepage
if (packageJson.homepage) {
// github action outputs. Do not touch.
console.log('::set-output name=public_url::' + packageJson.homepage)
console.log('::set-output name=public_path::' + new URL(packageJson.homepage).pathname)
}
// log stuff
console.log('VERSIONS: ', Object.entries(ENV_CONTENT), '\n')
// save files
fs.writeFileSync(
'.env',
Object.entries(ENV_CONTENT)
.map(e => e[0] + '=' + JSON.stringify(e[1]))
.join('\n') + '\n'
)
fs.writeFileSync('./package.json', JSON.stringify(packageJson, null, 2))
fs.writeFileSync('./public/package.json', JSON.stringify(publicPackageJson, null, 2))
// public url logic
function getPublicUrls() {
const isStatic = !!process.env.GEN_STATIC_LOCAL
const isCI = !!process.env.CI
const isVercel = isCI && !!process.env.VERCEL
const isCDN = !isStatic && isCI && !isVercel
console.log('is static', isStatic)
console.log('is CI', isCI)
console.log('is Vercel', isVercel)
console.log('is CDN', isCDN)
if (isCDN) {
// master/main branch, also releases
const cdnUrl = `https://cdn.decentraland.org/${publicPackageJson.name}/${publicPackageJson.version}`
console.log(`Using CDN as public url: "${cdnUrl}"`)
return {
VITE_BASE_URL: cdnUrl
}
}
// localhost
console.log('Using empty pubic url')
return {
VITE_BASE_URL: ''
}
}