86cce6d161
Biome as it is now didn't work out for us 😢 Summary for posterity: * it IS much, much faster, fast enough to skip any sort of caching * we couldn't fully replace Prettier just yet. We use Prettier programmatically to format code in docs, and Biome's JS interface is officially alpha and [had legacy peer deps set](https://github.com/biomejs/biome/pull/1756) (which would fail our CI build as we don't allow installation warnings) * ternary formatting differs from Prettier, leading to a large diff https://github.com/biomejs/biome/issues/1661 * import sorting differs from Prettier's `prettier-plugin-organize-imports`, making the diff even bigger * the deal breaker is a multi-second delay on saving large files (for us it's [Editor.ts](https://github.com/tldraw/tldraw/blob/main/packages/editor/src/lib/editor/Editor.ts)) in VSCode when import sorting is enabled. There is a seemingly relevant Biome issue where I posted a small summary of our findings: https://github.com/biomejs/biome/issues/1569#issuecomment-1930411623 Further actions: * reevaluate in a few months as Biome matures ### Change Type - [x] `internal` — Any other changes that don't affect the published package
39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import { exec } from './lib/exec'
|
|
import { nicelog } from './lib/nicelog'
|
|
import { getLatestVersion, publish, setAllVersions } from './lib/publishing'
|
|
|
|
async function main() {
|
|
const sha = (await exec('git', ['rev-parse', 'HEAD'])).trim().slice(0, 12)
|
|
|
|
async function setCanaryVersions(bump: 'major' | 'minor' | 'patch') {
|
|
const latestVersion = getLatestVersion()
|
|
|
|
const nextVersion = latestVersion.prerelease.length
|
|
? // if the package is in prerelease mode, we want to release a canary for the current version rather than bumping
|
|
latestVersion
|
|
: latestVersion?.inc(bump)
|
|
const versionString = `${nextVersion.major}.${nextVersion.minor}.${nextVersion.patch}-canary.${sha}`
|
|
|
|
setAllVersions(versionString)
|
|
}
|
|
|
|
// module was called directly
|
|
const bumpType = (await exec('npx', ['auto', 'version'])).trim() as
|
|
| 'major'
|
|
| 'minor'
|
|
| 'patch'
|
|
| ''
|
|
|
|
nicelog('bumpType', bumpType)
|
|
if (bumpType === '') {
|
|
nicelog('nothing to do')
|
|
} else if (['major', 'minor', 'patch'].includes(bumpType)) {
|
|
nicelog('setting canary versions')
|
|
setCanaryVersions(bumpType)
|
|
publish()
|
|
} else {
|
|
throw new Error('Invalid bump type provided')
|
|
}
|
|
}
|
|
|
|
main()
|