-
Notifications
You must be signed in to change notification settings - Fork 31
Expand file tree
/
Copy pathpublish-single-version.js
More file actions
38 lines (30 loc) Β· 1.23 KB
/
publish-single-version.js
File metadata and controls
38 lines (30 loc) Β· 1.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/env node
const fs = require('fs');
const path = require('path');
const { execSync } = require('child_process');
const pkgPath = path.join(process.cwd(), 'package.json');
if (!fs.existsSync(pkgPath)) {
console.error('β No package.json found in current directory.');
process.exit(1);
}
const original = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
const publishMeta = original['x-publish'] || {};
const publishName = publishMeta.publishName || 'libpg-query';
const distTag = process.env.TAG || publishMeta.distTag || 'latest';
if (!original.name || !original.version) {
console.error('β package.json must include name and version');
process.exit(1);
}
const modified = { ...original, name: publishName };
try {
console.log(`π¦ Publishing ${publishName}@${original.version} with tag '${distTag}'...`);
fs.writeFileSync(pkgPath, JSON.stringify(modified, null, 2));
// npm OK here since it's version, not dist/ package...
execSync(`npm publish --tag ${distTag}`, { stdio: 'inherit' });
console.log('β
Publish complete.');
} catch (err) {
console.error('β Publish failed:', err.message);
} finally {
fs.writeFileSync(pkgPath, JSON.stringify(original, null, 2));
console.log('π Restored original package.json');
}