返回 slidev
publish.ts
根目录 / packages / vscode / scripts / publish.ts
1 import type { Options } from 'tinyexec'
2 import fs from 'node:fs/promises'
3 import process from 'node:process'
4 import { x } from 'tinyexec'
5
6 async function publish() {
7 const root = new URL('..', import.meta.url)
8 const rawJSON = await fs.readFile(new URL('../package.json', import.meta.url), 'utf-8')
9 const pkg = JSON.parse(rawJSON)
10
11 if (pkg.version.includes('-')) {
12 console.warn('Skipping publish VS Code extension because the version contains a pre-release tag.')
13 return
14 }
15
16 if (!process.env.VSCE_TOKEN) {
17 console.error('Missing VSCE_TOKEN')
18 process.exit(1)
19 }
20 if (!process.env.OVSX_TOKEN) {
21 console.error('Missing OVSX_TOKEN')
22 process.exit(1)
23 }
24
25 console.log('Publishing VS Code extension...')
26
27 const options: Partial<Options> = {
28 nodeOptions: {
29 cwd: root,
30 stdio: 'inherit',
31 },
32 throwOnError: true,
33 }
34
35 await x('npm', ['run', 'build'], options)
36 console.log('\nPublish to VSCE...\n')
37 await x('npx', ['@vscode/vsce', 'publish', '--no-dependencies', '-p', process.env.VSCE_TOKEN!], options)
38 console.log('\nPublish to OVSE...\n')
39 await x('npx', ['ovsx', 'publish', '--no-dependencies', '-p', process.env.OVSX_TOKEN!], options)
40 }
41
42 publish()
43
43 lines TYPESCRIPT