Skip to content

Commit 19cb859

Browse files
Upgrade some dependencies (#871)
* Switch to NPM workspaces * Add bun types for testing * Remove some dependencies * Cleanup code * Upgrade esbuild * Hardcode externals They’re the same between the packages except for vscode but including an external that’s not ultimately required isn’t an error. * Reorganize package json * Replace TSDX with esbuild * wip * Simplify script * Move esbuild into individual packages * Bump vsce * Fix packaging * fixup * Swap mri for minimist It’s the same API but maintained * Update lockfiles * Add logs * Bump version * Update lockfile * Add test for `extractClassNames` * fix
1 parent 3c0f17c commit 19cb859

File tree

14 files changed

+13353
-71564
lines changed

14 files changed

+13353
-71564
lines changed

.github/workflows/bump-version.mjs

+44-39
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,49 @@
1-
import latestSemver from 'latest-semver'
2-
import * as fs from 'fs/promises'
3-
import assert from 'assert'
1+
import PackageJson from '@npmcli/package-json'
2+
import assert from 'node:assert'
3+
import semver from 'semver'
44

5-
async function bumpVersion() {
6-
let res = await fetch(
7-
'https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery',
8-
{
9-
method: 'POST',
10-
headers: {
11-
accept: 'application/json;api-version=7.2-preview.1;excludeUrls=true',
12-
'content-type': 'application/json',
5+
let res = await fetch('https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery', {
6+
method: 'POST',
7+
headers: {
8+
accept: 'application/json;api-version=7.2-preview.1;excludeUrls=true',
9+
'content-type': 'application/json',
10+
},
11+
body: JSON.stringify({
12+
assetTypes: null,
13+
flags: 2151,
14+
filters: [
15+
{
16+
criteria: [{ filterType: 7, value: 'bradlc.vscode-tailwindcss' }],
17+
direction: 2,
18+
pageSize: 100,
19+
pageNumber: 1,
20+
sortBy: 0,
21+
sortOrder: 0,
22+
pagingToken: null,
1323
},
14-
body: JSON.stringify({
15-
assetTypes: null,
16-
flags: 2151,
17-
filters: [
18-
{
19-
criteria: [{ filterType: 7, value: 'bradlc.vscode-tailwindcss' }],
20-
direction: 2,
21-
pageSize: 100,
22-
pageNumber: 1,
23-
sortBy: 0,
24-
sortOrder: 0,
25-
pagingToken: null,
26-
},
27-
],
28-
}),
29-
}
30-
)
31-
let { results } = await res.json()
32-
let versions = results[0].extensions[0].versions.map(({ version }) => version)
33-
let latest = latestSemver(versions)
34-
let parts = latest.split('.')
24+
],
25+
}),
26+
})
3527

36-
assert(Number(parts[1]) % 2 === 1)
28+
let { results } = await res.json()
3729

38-
let nextVersion = `${parts[0]}.${parts[1]}.${Number(parts[2]) + 1}`
39-
let pkgFilename = 'packages/vscode-tailwindcss/package.json'
40-
let pkg = JSON.parse(await fs.readFile(pkgFilename, 'utf8'))
41-
await fs.writeFile(pkgFilename, JSON.stringify({ ...pkg, version: nextVersion }, null, 2), 'utf8')
42-
}
30+
/** @type {string[]} */
31+
let versions = results[0].extensions[0].versions.map(({ version }) => version)
4332

44-
bumpVersion()
33+
// Determine the latest version of the extension
34+
let latest = versions
35+
.map((v) => semver.parse(v, { includePrerelease: true, loose: false }))
36+
.filter((v) => v !== null)
37+
.filter((v) => v.prerelease.length === 0)
38+
.sort((a, b) => b.compare(a) || b.compareBuild(a))
39+
.at(0)
40+
41+
// Require the minor version to be odd. This is done because
42+
// the VSCode Marketplace suggests using odd numbers for
43+
// pre-release builds and even ones for release builds
44+
assert(latest && latest.minor % 2 === 1)
45+
46+
// Bump the patch version in `package.json`
47+
let nextVersion = latest.inc('patch').format()
48+
let pkg = await PackageJson.load('packages/vscode-tailwindcss/package.json')
49+
await pkg.update({ version: nextVersion }).save()

esbuild.js renamed to esbuild.mjs

+21-10
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
1-
const esbuild = require('esbuild')
2-
const path = require('path')
3-
const fs = require('fs')
4-
const mri = require('mri')
1+
import esbuild from 'esbuild'
2+
import fs from 'fs'
3+
import { createRequire } from 'module'
4+
import minimist from 'minimist'
55

6-
const resolve = (...args) => path.resolve(__dirname, ...args)
6+
const require = createRequire(import.meta.url)
77

8-
const args = mri(process.argv.slice(2), {
8+
const args = minimist(process.argv.slice(2), {
99
boolean: ['watch', 'minify'],
10-
string: ['outfile', 'outdir', 'external'],
10+
string: ['outfile', 'outdir'],
1111
})
1212

13-
esbuild.build({
13+
console.log('- Preparing')
14+
let ctx = await esbuild.context({
1415
entryPoints: args._,
1516
bundle: true,
1617
platform: 'node',
17-
external: [].concat(args.external),
18+
external: ['pnpapi', 'vscode', 'lightningcss', '@tailwindcss/oxide'],
1819
format: 'cjs',
1920
outdir: args.outdir,
2021
outfile: args.outfile,
21-
watch: args.watch,
2222
minify: args.minify,
2323
plugins: [
2424
{
@@ -74,3 +74,14 @@ esbuild.build({
7474
},
7575
],
7676
})
77+
78+
console.log('- Building')
79+
await ctx.rebuild()
80+
81+
if (args.watch) {
82+
console.log('- Watching')
83+
await ctx.watch()
84+
} else {
85+
console.log('- Cleaning up')
86+
await ctx.dispose()
87+
}

lerna.json

-4
This file was deleted.

0 commit comments

Comments
 (0)