2c23da077f
Fixing + doing some maintenance as I was using it for some things. Changes: - fixed a bug related to how React is injected - added a progress tracker for the numbers of requests - retry on 500 - added a param for crashing the lambda manually (useful for cold boots) - added a param to skip build, useful if you want to retest the same variation - don't crash when there's no data to compare ## Bug - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Errors have a helpful link attached, see [`contributing.md`](https://github.com/vercel/next.js/blob/canary/contributing.md) ## Feature - [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR. - [ ] Related issues linked using `fixes #number` - [ ] [e2e](https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs) tests added - [ ] Documentation added - [ ] Telemetry added. In case of a feature if it's used or not. - [ ] Errors have a helpful link attached, see [`contributing.md`](https://github.com/vercel/next.js/blob/canary/contributing.md) ## Documentation / Examples - [ ] Make sure the linting passes by running `pnpm build && pnpm lint` - [ ] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
52 lines
1.4 KiB
JavaScript
52 lines
1.4 KiB
JavaScript
import execa from 'execa'
|
|
import fs from 'fs/promises'
|
|
import path from 'path'
|
|
|
|
export async function generatePackageJson(folder, withLocalNext = false) {
|
|
const packageJson = JSON.parse(
|
|
await fs.readFile(path.join(folder, 'package.json'))
|
|
)
|
|
|
|
const currentVersions = await getCurrentRootReactPackagesVersions()
|
|
|
|
packageJson.dependencies = packageJson.dependencies || {}
|
|
packageJson.dependencies['react'] = currentVersions.react
|
|
packageJson.dependencies['react-dom'] = currentVersions['react-dom']
|
|
if (withLocalNext) {
|
|
packageJson.dependencies.next = await packNextBuild(folder)
|
|
} else {
|
|
packageJson.dependencies.next = await getCurrentNextVersion()
|
|
}
|
|
|
|
await fs.writeFile(
|
|
path.join(folder, 'package.json'),
|
|
JSON.stringify(packageJson, null, 2)
|
|
)
|
|
}
|
|
|
|
export async function packNextBuild(folder) {
|
|
const process = await execa('npm', [
|
|
'pack',
|
|
'../../packages/next',
|
|
`--pack-destination=${folder}`,
|
|
])
|
|
|
|
return `file:./${process.stdout}`
|
|
}
|
|
|
|
async function getCurrentNextVersion() {
|
|
const packageJson = JSON.parse(
|
|
await fs.readFile('../../packages/next/package.json', 'utf8')
|
|
)
|
|
return packageJson.version
|
|
}
|
|
|
|
async function getCurrentRootReactPackagesVersions() {
|
|
const packageJson = JSON.parse(
|
|
await fs.readFile('../../package.json', 'utf8')
|
|
)
|
|
return {
|
|
react: packageJson.devDependencies['react'],
|
|
'react-dom': packageJson.devDependencies['react-dom'],
|
|
}
|
|
}
|