返回 slidev
pack.mjs
根目录 / scripts / pack.mjs
1 import { resolve } from 'node:path'
2 import process from 'node:process'
3 import { $, argv, cd, fs } from 'zx'
4
5 const WORKSPACE_ROOT = process.cwd()
6 const PKG_ROOT = resolve(WORKSPACE_ROOT, argv._[0])
7
8 const packages = {
9 'types': './packages/types',
10 'parser': './packages/parser',
11 'cli': './packages/slidev',
12 'client': './packages/client',
13 'create-app': './packages/create-app',
14 }
15
16 async function replaceDeps() {
17 cd(WORKSPACE_ROOT)
18 for (const path of Object.values(packages)) {
19 console.log('[pack] replaceDeps', path)
20 const pkgJson = JSON.parse(await fs.readFile(`${path}/package.json`, 'utf-8'))
21 for (const name in packages) {
22 const pkg = `@slidev/${name}`
23 if (pkgJson.dependencies?.[pkg])
24 pkgJson.dependencies[pkg] = `file:${PKG_ROOT}/${name}.tgz`
25 if (pkgJson.devDependencies?.[pkg])
26 pkgJson.devDependencies[pkg] = `file:${PKG_ROOT}/${name}.tgz`
27 }
28 await fs.writeFile(`${path}/package.json`, JSON.stringify(pkgJson, null, 2))
29 }
30 }
31
32 async function pack() {
33 await replaceDeps()
34 await fs.mkdir(PKG_ROOT, { recursive: true })
35 for (const [name, path] of Object.entries(packages)) {
36 console.log('[pack] pack', path)
37 cd(resolve(WORKSPACE_ROOT, path))
38 const { stdout } = await $`pnpm pack`
39 await fs.move(stdout.split('\n').filter(Boolean).at(-1).trim(), `${PKG_ROOT}/${name}.tgz`)
40 }
41 }
42
43 console.log('[pack] start packing...')
44 await pack()
45 console.log('[pack] done')
46
46 lines Plain Text