/
githubmirror
/
next.js
Обзор
Документация
Войти
/
githubmirror
/
next.js
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
canary
scripts/inject-deploy-url.js
75 строк
2 KB
JJ Kasper
Add tarball deployments for each build (#62969)
13 мар 2024, 21:39
Не верифицирован
13 мар 2024, 21:39
bc6598f
Код
Авторство
О чём код?
const path = require('path') const { spawn } = require('child_process') const fs = require('fs/promises') const cwd = process.cwd() async function main() { const tarballs = await fs.readdir(path.join(cwd, 'public')) const nextTarball = tarballs.find((item) => !item.includes('-swc')) await fs.rename( path.join(cwd, 'public', nextTarball), path.join(cwd, nextTarball) ) await new Promise((resolve, reject) => { const child = spawn('tar', ['-xf', nextTarball], { stdio: 'inherit', shell: true, cwd, }) child.on('exit', (code) => { if (code) { return reject(`Failed with code ${code}`) } resolve() }) }) const unpackedPackageJson = path.join(cwd, 'package/package.json') const parsedPackageJson = JSON.parse( await fs.readFile(unpackedPackageJson, 'utf8') ) const { optionalDependencies } = parsedPackageJson for (const key of Object.keys(optionalDependencies)) { optionalDependencies[key] = optionalDependencies[key].replace( 'DEPLOY_URL', process.env.VERCEL_URL ) } await fs.writeFile( unpackedPackageJson, JSON.stringify(parsedPackageJson, null, 2) ) await fs.unlink(nextTarball) await new Promise((resolve, reject) => { const child = spawn('tar', ['-czf', nextTarball, 'package'], { stdio: 'inherit', shell: true, cwd, }) child.on('exit', (code) => { if (code) { return reject(`Failed with code ${code}`) } resolve() }) }) await fs.rename( path.join(cwd, nextTarball), path.join(cwd, 'public', nextTarball) ) } main().catch((err) => { console.error(err) process.exit(1) })