Skip to content

Commit 4f0d78a

Browse files
author
winjo
committed
feat: add upgrade kaitian script
1 parent 1390620 commit 4f0d78a

8 files changed

Lines changed: 701 additions & 1292 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"description": "Ant Codespaces for browser",
99
"main": "index.js",
1010
"engines": {
11-
"kaitian": "1.25.0"
11+
"kaitian": "1.28.0"
1212
},
1313
"scripts": {
1414
"preinstall": "node scripts/preinstall",

scripts/build.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ const args = require('minimist')(process.argv.slice(2));
55
const invoke = require('./utils/invoke');
66

77
invoke(async () => {
8-
await execa.command('npm run clean');
8+
const scope = args.scope || 'all';
9+
await execa.command(`npx rimraf packages/${scope === 'all' ? '*' : scope}/lib`);
910

1011
signale.pending(`开始编译 ${args.scope || 'all'}`);
1112

scripts/download-extension.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ const extensions = [
99
version: '1.0.0',
1010
ignore: false,
1111
},
12+
{
13+
publisher: 'kaitian-worker',
14+
name: 'html-language-features',
15+
version: '1.0.0-beta-1',
16+
ignore: true,
17+
},
1218
];
1319

1420
const path = require('path');

scripts/upgrade-kaitian.js

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
const execa = require('execa');
2+
const invoke = require('./utils/invoke');
3+
const signale = require('signale');
4+
const args = require('minimist')(process.argv.slice(2));
5+
const fse = require('fs-extra');
6+
const path = require('path');
7+
const https = require('https');
8+
const { StringDecoder } = require('string_decoder');
9+
10+
const pkg = '@ali/ide-core-common';
11+
12+
invoke(async () => {
13+
const v = args.v || args.version;
14+
const version = await getOrCheckVersion(v);
15+
console.log(version);
16+
signale.info(`版本: ${version}`);
17+
18+
const { packages } = await getKaitianDeps(version);
19+
20+
const pkgPathList = [];
21+
pkgPathList.push(path.resolve('./package.json'));
22+
const packagesDir = path.resolve('./packages');
23+
const dirents = await fse.readdir(packagesDir, { withFileTypes: true });
24+
dirents.forEach((dirent) => {
25+
if (dirent.isDirectory()) {
26+
pkgPathList.push(path.join(packagesDir, dirent.name, 'package.json'));
27+
}
28+
});
29+
signale.await(`正在写入数据`);
30+
await Promise.all(pkgPathList.map((pkgPath) => upgradeKaitianDeps(pkgPath, version, packages)));
31+
signale.await(`yarn 重装依赖`);
32+
await execa.command('npx yarn --network-timeout 100000', {
33+
stdio: 'inherit',
34+
});
35+
});
36+
37+
async function getOrCheckVersion(version) {
38+
if (version) {
39+
const { stdout: name } = await execa.command(`tnpm view ${pkg}@${version} name`);
40+
if (!name) {
41+
signale.fatal(`${version} 不存在`);
42+
process.exit(128);
43+
}
44+
} else {
45+
({ stdout: version } = await execa.command(`tnpm view ${pkg}@latest version`));
46+
if (!version) {
47+
signale.fatal(`查找最新版本失败`);
48+
process.exit(128);
49+
}
50+
}
51+
return version;
52+
}
53+
54+
async function getKaitianDeps(v) {
55+
return new Promise((resolve, reject) => {
56+
const decoder = new StringDecoder('utf8');
57+
https.get(`https://g.alipay.com/@ali/kaitian@${v}/manifest.json`, (res) => {
58+
const { statusCode } = res;
59+
if (statusCode >= 200 && statusCode < 300) {
60+
let text = '';
61+
res.on('data', (chunk) => {
62+
text += decoder.write(chunk);
63+
});
64+
res.on('end', () => {
65+
text += decoder.end();
66+
return resolve(JSON.parse(text));
67+
});
68+
} else {
69+
reject(new Error('请求 deps 失败'));
70+
}
71+
});
72+
});
73+
}
74+
75+
async function upgradeKaitianDeps(pkgPath, version, kaitianDepList) {
76+
const pkgJSON = await fse.readJSON(pkgPath);
77+
let modified = false;
78+
if (pkgJSON.engines && pkgJSON.engines.kaitian) {
79+
pkgJSON.engines.kaitian = version;
80+
modified = true;
81+
}
82+
['dependencies', 'devDependencies'].forEach((field) => {
83+
const obj = pkgJSON[field];
84+
if (!obj) return;
85+
Object.keys(obj).forEach((dep) => {
86+
if (kaitianDepList[dep]) {
87+
obj[dep] = kaitianDepList[dep];
88+
modified = true;
89+
}
90+
});
91+
});
92+
if (modified) {
93+
await fse.writeJSON(pkgPath, pkgJSON, { spaces: 2 });
94+
}
95+
}

scripts/worker-host.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ const invoke = require('./utils/invoke');
44
invoke(async () => {
55
await execa.command('npx webpack --config webpack/config.worker.js', {
66
env: {
7-
IS_DEV: process.env.IS_DEV == '1',
7+
IS_DEV: process.env.IS_DEV,
88
},
99
cwd: './packages/toolkit',
1010
});

tsconfig.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,8 @@
4242
"include": [
4343
"packages",
4444
"typings"
45+
],
46+
"exclude": [
47+
"packages/toolkit"
4548
]
4649
}

typings/global.d.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ declare module 'process' {
33
namespace NodeJS {
44
interface ProcessEnv {
55
IS_DEV: boolean;
6-
EXTENSION_WORKER_HOST: string;
6+
WORKER_HOST: string;
7+
WEBVIEW_ENDPOINT: string;
78
}
89
}
910
}

0 commit comments

Comments
 (0)