Skip to content

Commit acbcd46

Browse files
authored
refactor: add script to update version, remove import json (#168)
* refactor: add script to update version, remove import json * chore: update version * fix: fix cr issues
1 parent aff6b68 commit acbcd46

5 files changed

Lines changed: 75 additions & 9 deletions

File tree

__tests__/unit/version.test.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { describe, expect, it } from 'vitest';
2+
import pkg from '../../package.json';
3+
import { VERSION } from '../../src';
4+
5+
describe('verify version', () => {
6+
it('should match package.json version', () => {
7+
expect(VERSION).toBe(pkg.version);
8+
});
9+
});

package.json

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
{
22
"name": "@antv/infographic",
3-
"version": "0.2.8",
4-
"workspaces": [
5-
"dev",
6-
"site"
7-
],
3+
"version": "0.2.9",
84
"description": "An Infographic Generation and Rendering Framework, bring words to life!",
95
"keywords": [
106
"antv",
@@ -47,6 +43,10 @@
4743
"dist",
4844
"src"
4945
],
46+
"workspaces": [
47+
"dev",
48+
"site"
49+
],
5050
"scripts": {
5151
"build": "run-s clean build:esm build:cjs build:umd size",
5252
"build:cjs": "tsc --module commonjs --outDir lib",
@@ -64,7 +64,8 @@
6464
"lint:site": "npm --prefix site run lint",
6565
"prepublishOnly": "npm run ci",
6666
"size": "size-limit",
67-
"test": "vitest --run --coverage"
67+
"test": "vitest --run --coverage",
68+
"version": "node scripts/version.mjs"
6869
},
6970
"commitlint": {
7071
"extends": [

scripts/version.mjs

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import { readFileSync, writeFileSync } from 'fs';
2+
import { execSync } from 'child_process';
3+
4+
const pkgPath = './package.json';
5+
const versionPath = './src/version.ts';
6+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
7+
8+
const getPublishedVersion = (name) => {
9+
try {
10+
return execSync(`npm view ${name} version`, { encoding: 'utf-8' }).trim();
11+
} catch (error) {
12+
return null;
13+
}
14+
};
15+
16+
const parseVersion = (version) => {
17+
const parts = version.split('.').map((part) => Number(part));
18+
if (parts.length !== 3 || parts.some(Number.isNaN)) {
19+
throw new Error(`Invalid version format: ${version}`);
20+
}
21+
return parts;
22+
};
23+
24+
const bumpPatch = (version) => {
25+
const parts = parseVersion(version);
26+
parts[2] += 1;
27+
return parts.join('.');
28+
};
29+
30+
const publishedVersion = getPublishedVersion(pkg.name);
31+
let nextVersion = pkg.version;
32+
33+
const isGreaterThan = (left, right) => {
34+
const leftParts = parseVersion(left);
35+
const rightParts = parseVersion(right);
36+
for (let i = 0; i < 3; i += 1) {
37+
if (leftParts[i] > rightParts[i]) return true;
38+
if (leftParts[i] < rightParts[i]) return false;
39+
}
40+
return false;
41+
};
42+
43+
if (publishedVersion) {
44+
if (isGreaterThan(pkg.version, publishedVersion)) {
45+
// Local version is newer; keep package.json as-is.
46+
} else if (pkg.version === publishedVersion) {
47+
nextVersion = bumpPatch(pkg.version);
48+
pkg.version = nextVersion;
49+
writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\n`, 'utf-8');
50+
} else {
51+
throw new Error(
52+
`Package version in package.json (${pkg.version}) is lower than the published version (${publishedVersion}). Please update it.`,
53+
);
54+
}
55+
}
56+
57+
writeFileSync(versionPath, `export const VERSION = '${nextVersion}';\n`, 'utf-8');

src/index.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
import pkg from '../package.json' with { type: 'json' };
2-
3-
export const VERSION = pkg.version;
41
export * from './designs';
52
export { getItemProps, getThemeColors } from './designs/utils';
63
export {
@@ -52,6 +49,7 @@ export { parseSyntax } from './syntax';
5249
export { getTemplate, getTemplates, registerTemplate } from './templates';
5350
export { getTheme, getThemes, registerTheme } from './themes';
5451
export { parseSVG, setFontExtendFactor } from './utils';
52+
export { VERSION } from './version';
5553

5654
export type { EditBarOptions } from './editor';
5755
export type {

src/version.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const VERSION = '0.2.9';

0 commit comments

Comments
 (0)