@wukong-kit/extension 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/wukong-extension-sync.js +96 -0
- package/package.json +5 -1
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
const { existsSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync } = require('fs');
|
|
3
|
+
const { dirname, join, relative, resolve } = require('path');
|
|
4
|
+
|
|
5
|
+
const projectRoot = process.cwd();
|
|
6
|
+
const packageRoot = resolve(__dirname, '..');
|
|
7
|
+
|
|
8
|
+
main();
|
|
9
|
+
|
|
10
|
+
function main() {
|
|
11
|
+
const targetRoot = resolve(projectRoot, 'extensions', 'wukong');
|
|
12
|
+
const extensionsRoot = resolve(projectRoot, 'extensions');
|
|
13
|
+
|
|
14
|
+
assertInside(targetRoot, extensionsRoot);
|
|
15
|
+
|
|
16
|
+
if (!existsSync(join(packageRoot, 'dist', 'main.js'))) {
|
|
17
|
+
throw new Error(`Wukong extension dist is missing: ${join(packageRoot, 'dist')}`);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
rmDir(targetRoot);
|
|
21
|
+
mkdirSync(targetRoot, { recursive: true });
|
|
22
|
+
|
|
23
|
+
writeCocosExtensionPackage(join(packageRoot, 'package.json'), join(targetRoot, 'package.json'));
|
|
24
|
+
copyIfExists(join(packageRoot, 'README.md'), join(targetRoot, 'README.md'));
|
|
25
|
+
copyDir(join(packageRoot, 'dist'), join(targetRoot, 'dist'));
|
|
26
|
+
|
|
27
|
+
console.log(`[WK] Extension synced: ${relative(projectRoot, targetRoot)}`);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function writeCocosExtensionPackage(source, target) {
|
|
31
|
+
const pkg = JSON.parse(readFileSync(source, 'utf8'));
|
|
32
|
+
pkg.name = 'wukong';
|
|
33
|
+
pkg.displayName = 'WKTools';
|
|
34
|
+
pkg.main = './dist/main.js';
|
|
35
|
+
|
|
36
|
+
if (pkg.panels && pkg.panels.default) {
|
|
37
|
+
pkg.panels.default.main = './dist/panels/default/index.js';
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
delete pkg.scripts;
|
|
41
|
+
delete pkg.bin;
|
|
42
|
+
delete pkg.files;
|
|
43
|
+
delete pkg.devDependencies;
|
|
44
|
+
delete pkg.dependencies;
|
|
45
|
+
delete pkg.publishConfig;
|
|
46
|
+
|
|
47
|
+
mkdirSync(dirname(target), { recursive: true });
|
|
48
|
+
writeFileSync(target, `${JSON.stringify(pkg, null, 2)}\n`, 'utf8');
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function copyIfExists(source, target) {
|
|
52
|
+
if (!existsSync(source)) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
mkdirSync(dirname(target), { recursive: true });
|
|
57
|
+
writeFileSync(target, readFileSync(source));
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function copyDir(source, target) {
|
|
61
|
+
if (!existsSync(source)) {
|
|
62
|
+
throw new Error(`Required directory not found: ${source}`);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
mkdirSync(target, { recursive: true });
|
|
66
|
+
for (const entry of readdirSync(source)) {
|
|
67
|
+
const sourcePath = join(source, entry);
|
|
68
|
+
const targetPath = join(target, entry);
|
|
69
|
+
const stats = statSync(sourcePath);
|
|
70
|
+
|
|
71
|
+
if (stats.isDirectory()) {
|
|
72
|
+
copyDir(sourcePath, targetPath);
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
copyIfExists(sourcePath, targetPath);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function rmDir(target) {
|
|
81
|
+
if (!existsSync(target)) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
rmSync(target, {
|
|
86
|
+
recursive: true,
|
|
87
|
+
force: true,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function assertInside(target, root) {
|
|
92
|
+
const rel = relative(root, target);
|
|
93
|
+
if (rel.startsWith('..') || rel === '' || /^[a-zA-Z]:/.test(rel)) {
|
|
94
|
+
throw new Error(`Refusing to update extension outside project extensions directory: ${target}`);
|
|
95
|
+
}
|
|
96
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wukong-kit/extension",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"author": "Wukong Kit",
|
|
5
5
|
"description": "Wukong extension for Cocos Creator editor",
|
|
6
6
|
"package_version": 2,
|
|
@@ -12,7 +12,11 @@
|
|
|
12
12
|
"scripts": {
|
|
13
13
|
"build": "tsc"
|
|
14
14
|
},
|
|
15
|
+
"bin": {
|
|
16
|
+
"wukong-extension-sync": "./bin/wukong-extension-sync.js"
|
|
17
|
+
},
|
|
15
18
|
"files": [
|
|
19
|
+
"bin",
|
|
16
20
|
"dist",
|
|
17
21
|
"package.json",
|
|
18
22
|
"README.md"
|