create-antd-skin 1.0.7 → 1.0.9
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/index.js +3 -1
- package/bin/layout.js +125 -0
- package/bin/skin.js +1 -1
- package/package.json +11 -5
package/bin/index.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
const commander_1 = require("commander");
|
|
5
5
|
const skin_1 = require("./skin");
|
|
6
|
+
const layout_1 = require("./layout");
|
|
6
7
|
const program = new commander_1.Command();
|
|
7
8
|
program
|
|
8
9
|
.name('create-antd-skin')
|
|
@@ -10,6 +11,7 @@ program
|
|
|
10
11
|
.version("1.0.0")
|
|
11
12
|
.argument("[skin-name]", 'Skin name')
|
|
12
13
|
.action(async (skinName) => {
|
|
13
|
-
(0, skin_1.installSkin)(skinName);
|
|
14
|
+
await (0, skin_1.installSkin)(skinName);
|
|
15
|
+
await (0, layout_1.updateLayouts)(process.cwd());
|
|
14
16
|
});
|
|
15
17
|
program.parse();
|
package/bin/layout.js
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.getLayoutFiles = getLayoutFiles;
|
|
40
|
+
exports.updateLayouts = updateLayouts;
|
|
41
|
+
exports.patchLayoutFile = patchLayoutFile;
|
|
42
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
43
|
+
const path_1 = __importDefault(require("path"));
|
|
44
|
+
const parser_1 = require("@babel/parser");
|
|
45
|
+
const traverse_1 = __importDefault(require("@babel/traverse"));
|
|
46
|
+
const generator_1 = __importDefault(require("@babel/generator"));
|
|
47
|
+
const t = __importStar(require("@babel/types"));
|
|
48
|
+
async function patchLayoutFile(filePath) {
|
|
49
|
+
const code = await fs_extra_1.default.readFile(filePath, "utf8");
|
|
50
|
+
if (!code.includes("AntdLayout")) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const ast = (0, parser_1.parse)(code, {
|
|
54
|
+
sourceType: "module",
|
|
55
|
+
plugins: [
|
|
56
|
+
"typescript",
|
|
57
|
+
"jsx"
|
|
58
|
+
]
|
|
59
|
+
});
|
|
60
|
+
let hasImport = false;
|
|
61
|
+
let changed = false;
|
|
62
|
+
(0, traverse_1.default)(ast, {
|
|
63
|
+
ImportDeclaration(path) {
|
|
64
|
+
if (path.node.source.value ===
|
|
65
|
+
"../components/warden-skin") {
|
|
66
|
+
hasImport = true;
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
JSXOpeningElement(path) {
|
|
70
|
+
if (!t.isJSXIdentifier(path.node.name) ||
|
|
71
|
+
path.node.name.name !== "AntdLayout") {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const hasThemeSkins = path.node.attributes.some(attr => {
|
|
75
|
+
return (t.isJSXAttribute(attr) &&
|
|
76
|
+
t.isJSXIdentifier(attr.name) &&
|
|
77
|
+
attr.name.name === "themeSkins");
|
|
78
|
+
});
|
|
79
|
+
if (hasThemeSkins) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
path.node.attributes.push(t.jsxAttribute(t.jsxIdentifier("themeSkins"), t.jsxExpressionContainer(t.identifier("wardenSkin"))));
|
|
83
|
+
changed = true;
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
if (!changed) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (!hasImport) {
|
|
90
|
+
ast.program.body.unshift(t.importDeclaration([
|
|
91
|
+
t.importDefaultSpecifier(t.identifier("wardenSkin"))
|
|
92
|
+
], t.stringLiteral("../components/warden-skin")));
|
|
93
|
+
}
|
|
94
|
+
const output = (0, generator_1.default)(ast, {
|
|
95
|
+
retainLines: true
|
|
96
|
+
}, code);
|
|
97
|
+
await fs_extra_1.default.writeFile(filePath, output.code);
|
|
98
|
+
console.log(`✔ updated ${path_1.default.relative(process.cwd(), filePath)}`);
|
|
99
|
+
}
|
|
100
|
+
async function updateLayouts(projectRoot) {
|
|
101
|
+
const layoutsDir = path_1.default.join(projectRoot, "src/layouts");
|
|
102
|
+
if (!(await fs_extra_1.default.pathExists(layoutsDir))) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const files = await getLayoutFiles(layoutsDir);
|
|
106
|
+
for (const file of files) {
|
|
107
|
+
await patchLayoutFile(file);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async function getLayoutFiles(dir) {
|
|
111
|
+
const result = [];
|
|
112
|
+
const items = await fs_extra_1.default.readdir(dir);
|
|
113
|
+
for (const item of items) {
|
|
114
|
+
const full = path_1.default.join(dir, item);
|
|
115
|
+
const stat = await fs_extra_1.default.stat(full);
|
|
116
|
+
if (stat.isDirectory()) {
|
|
117
|
+
result.push(...await getLayoutFiles(full));
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
if (/\.(tsx|ts)$/.test(item)) {
|
|
121
|
+
result.push(full);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return result;
|
|
125
|
+
}
|
package/bin/skin.js
CHANGED
|
@@ -45,7 +45,7 @@ async function copySkinFiles(skinName, skinDir, projectRoot) {
|
|
|
45
45
|
const entry = await findSkinEntry(skinDir);
|
|
46
46
|
const skinImagesDir = path_1.default.join(skinDir, "images");
|
|
47
47
|
const targetSkinDir = path_1.default.join(projectRoot, "src/components/warden-skin", skinName);
|
|
48
|
-
const targetImagesDir = path_1.default.join(projectRoot, "public/images", skinName);
|
|
48
|
+
const targetImagesDir = path_1.default.join(projectRoot, "public/images/skins", skinName);
|
|
49
49
|
await fs_extra_1.default.ensureDir(targetSkinDir);
|
|
50
50
|
await fs_extra_1.default.copy(entry.source, path_1.default.join(targetSkinDir, `index.${entry.ext}`));
|
|
51
51
|
if (fs_extra_1.default.existsSync(skinImagesDir)) {
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-antd-skin",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"description": "this is skin-cli for @adminui-dev/antd-layout",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"author": "zhouwenqi",
|
|
7
|
-
|
|
7
|
+
"bin": {
|
|
8
8
|
"create-antd-skin": "./bin/index.js"
|
|
9
9
|
},
|
|
10
10
|
"keywords": [
|
|
11
11
|
"create-antd-skin",
|
|
12
12
|
"antd-skin"
|
|
13
|
-
],
|
|
13
|
+
],
|
|
14
14
|
"publishConfig": {
|
|
15
15
|
"access": "public"
|
|
16
16
|
},
|
|
@@ -23,14 +23,18 @@
|
|
|
23
23
|
"url": "git+https://github.com/zhouwenqi/create-antd-skin.git"
|
|
24
24
|
},
|
|
25
25
|
"homepage": "https://www.adminui.dev",
|
|
26
|
-
|
|
26
|
+
"scripts": {
|
|
27
27
|
"build": "tsc",
|
|
28
28
|
"bw": "tsc -w",
|
|
29
29
|
"dev": "ts-node src/index.ts",
|
|
30
30
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
31
31
|
},
|
|
32
32
|
"license": "MIT",
|
|
33
|
-
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@babel/generator": "^7.29.7",
|
|
35
|
+
"@babel/parser": "^7.29.7",
|
|
36
|
+
"@babel/traverse": "^7.29.7",
|
|
37
|
+
"@babel/types": "^7.29.7",
|
|
34
38
|
"chalk": "^4.1.2",
|
|
35
39
|
"commander": "^12.1.0",
|
|
36
40
|
"degit": "^2.8.4",
|
|
@@ -40,6 +44,8 @@
|
|
|
40
44
|
"ora": "^8.1.0"
|
|
41
45
|
},
|
|
42
46
|
"devDependencies": {
|
|
47
|
+
"@types/babel__generator": "^7.27.0",
|
|
48
|
+
"@types/babel__traverse": "^7.28.0",
|
|
43
49
|
"@types/degit": "^2.8.6",
|
|
44
50
|
"@types/fs-extra": "^11.0.4",
|
|
45
51
|
"@types/inquirer": "^9.0.7",
|