@4399ywkf/cli 1.0.3 → 1.0.5
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/dist/index.js +424 -1
- package/dist/templates/app/src/locales/default/common.ts +1 -0
- package/dist/templates/app/src/locales/default/index.ts +2 -2
- package/dist/templates/app//347/277/273/350/257/221.md +1 -1
- package/dist/templates/common.ts +1 -0
- package/dist/templates/default/common.ts +1 -0
- package/dist/templates/default/index.ts +2 -2
- package/dist/templates/index.css +2 -282
- package/dist/templates/locales/default/common.ts +1 -0
- package/dist/templates/locales/default/index.ts +2 -2
- package/dist/templates/src/locales/default/common.ts +1 -0
- package/dist/templates/src/locales/default/index.ts +2 -2
- package/dist/templates//347/277/273/350/257/221.md +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1 +1,424 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@umijs/utils');
|
|
4
|
+
var fs = require('fs');
|
|
5
|
+
var path = require('path');
|
|
6
|
+
var figlet = require('figlet');
|
|
7
|
+
var boxen = require('boxen');
|
|
8
|
+
|
|
9
|
+
var ERegistry = /* @__PURE__ */ ((ERegistry2) => {
|
|
10
|
+
ERegistry2["npm"] = "https://registry.npmjs.com/";
|
|
11
|
+
ERegistry2["taobao"] = "https://registry.npmmirror.com/";
|
|
12
|
+
ERegistry2["git"] = "https://ywgit.gz4399.com/ywkf/";
|
|
13
|
+
return ERegistry2;
|
|
14
|
+
})(ERegistry || {});
|
|
15
|
+
const cloneGitTemplate = async (opts) => {
|
|
16
|
+
var _a, _b;
|
|
17
|
+
const { template, dest, gitUrl = "https://ywgit.gz4399.com/ywkf/" /* git */ } = opts;
|
|
18
|
+
const absoluteDest = path.resolve(dest);
|
|
19
|
+
const tempDir = `${absoluteDest}_temp`;
|
|
20
|
+
utils.logger.info(
|
|
21
|
+
`Init a new project with template ${utils.chalk.blue(template)} from git ...`
|
|
22
|
+
);
|
|
23
|
+
const repoUrl = `${gitUrl}${template}.git`;
|
|
24
|
+
try {
|
|
25
|
+
if (utils.fsExtra.existsSync(absoluteDest)) {
|
|
26
|
+
throw new Error(
|
|
27
|
+
`Destination ${absoluteDest} already exists. Please remove it first or choose a different name.`
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
if (utils.fsExtra.existsSync(tempDir)) {
|
|
31
|
+
utils.logger.warn(`Cleaning up temporary directory ${tempDir}...`);
|
|
32
|
+
utils.fsExtra.removeSync(tempDir);
|
|
33
|
+
}
|
|
34
|
+
utils.logger.info(`Cloning from ${utils.chalk.cyan(repoUrl)} ...`);
|
|
35
|
+
await utils.execa.execa("git", ["clone", repoUrl, tempDir], {
|
|
36
|
+
stdio: "inherit"
|
|
37
|
+
});
|
|
38
|
+
const gitDir = `${tempDir}/.git`;
|
|
39
|
+
if (utils.fsExtra.existsSync(gitDir)) {
|
|
40
|
+
utils.fsExtra.removeSync(gitDir);
|
|
41
|
+
}
|
|
42
|
+
utils.fsExtra.moveSync(tempDir, absoluteDest);
|
|
43
|
+
utils.logger.ready(`Init ${utils.chalk.green(template)} from git success`);
|
|
44
|
+
return absoluteDest;
|
|
45
|
+
} catch (e) {
|
|
46
|
+
if (utils.fsExtra.existsSync(tempDir)) {
|
|
47
|
+
try {
|
|
48
|
+
utils.fsExtra.removeSync(tempDir);
|
|
49
|
+
} catch (cleanupError) {
|
|
50
|
+
utils.logger.warn(`Failed to cleanup temporary directory: ${tempDir}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (((_a = e.message) == null ? void 0 : _a.includes("Repository not found")) || ((_b = e.stderr) == null ? void 0 : _b.includes("not found"))) {
|
|
54
|
+
throw new Error(
|
|
55
|
+
`Git repository not found: ${repoUrl}
|
|
56
|
+
Please check if the repository exists and you have access to it.`,
|
|
57
|
+
{ cause: e }
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
throw new Error(`Clone ${template} failed from ${repoUrl}`, { cause: e });
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
const unpackGitTemplate = async (opts) => {
|
|
64
|
+
const { template, dest, gitUrl = "https://ywgit.gz4399.com/ywkf/" /* git */ } = opts;
|
|
65
|
+
return cloneGitTemplate({ template, dest, gitUrl });
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const pkg = require("../package");
|
|
69
|
+
const DEFAULT_DATA = {
|
|
70
|
+
email: "ywkf@4399.com",
|
|
71
|
+
author: "ywkf",
|
|
72
|
+
version: pkg.version,
|
|
73
|
+
npmClient: "pnpm" /* pnpm */,
|
|
74
|
+
registry: ERegistry.npm,
|
|
75
|
+
withHusky: false,
|
|
76
|
+
extraNpmrc: "",
|
|
77
|
+
appTemplate: "app" /* app */
|
|
78
|
+
};
|
|
79
|
+
var index = async ({
|
|
80
|
+
cwd,
|
|
81
|
+
args,
|
|
82
|
+
defaultData = DEFAULT_DATA
|
|
83
|
+
}) => {
|
|
84
|
+
let [name] = args._;
|
|
85
|
+
let npmClient = "pnpm" /* pnpm */;
|
|
86
|
+
let registry = ERegistry.npm;
|
|
87
|
+
let gitTemplate;
|
|
88
|
+
let appTemplate = (defaultData == null ? void 0 : defaultData.appTemplate) || "app" /* app */;
|
|
89
|
+
const { username, email } = await utils.getGitInfo();
|
|
90
|
+
const author = email && username ? `${username} <${email}>` : "";
|
|
91
|
+
let pluginName = `${name || "demo"}`;
|
|
92
|
+
let target = name ? path.join(cwd, name) : cwd;
|
|
93
|
+
const { isCancel, text, select, intro, outro, confirm, note } = utils.clackPrompts;
|
|
94
|
+
const exitPrompt = () => {
|
|
95
|
+
outro(utils.chalk.red("Exit create-ywkf"));
|
|
96
|
+
process.exit(1);
|
|
97
|
+
};
|
|
98
|
+
const setName = async () => {
|
|
99
|
+
name = await text({
|
|
100
|
+
message: "\u8BF7\u8F93\u5165\u9879\u76EE\u540D\u79F0",
|
|
101
|
+
initialValue: name || "my-app",
|
|
102
|
+
validate: (value) => {
|
|
103
|
+
if (!value.length) {
|
|
104
|
+
return "\u8BF7\u8F93\u5165\u9879\u76EE\u540D\u79F0";
|
|
105
|
+
}
|
|
106
|
+
if (value != "." && utils.fsExtra.existsSync(path.join(cwd, value))) {
|
|
107
|
+
return `\u76EE\u5F55 ${value} \u5DF2\u5B58\u5728`;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
const selectAppTemplate = async () => {
|
|
113
|
+
appTemplate = await select({
|
|
114
|
+
message: "\u9009\u62E9\u5E94\u7528\u6A21\u677F",
|
|
115
|
+
// 中文化
|
|
116
|
+
options: [{ label: "\u901A\u7528Web\u5E94\u7528", value: "app" /* app */, hint: "\u63A8\u8350" }],
|
|
117
|
+
initialValue: "app" /* app */
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
const selectNpmClient = async () => {
|
|
121
|
+
npmClient = await select({
|
|
122
|
+
message: "\u9009\u62E9\u5305\u7BA1\u7406\u5DE5\u5177",
|
|
123
|
+
options: [
|
|
124
|
+
{ label: "npm" /* npm */, value: "npm" /* npm */ },
|
|
125
|
+
{ label: "yarn" /* yarn */, value: "yarn" /* yarn */ },
|
|
126
|
+
{ label: "pnpm" /* pnpm */, value: "pnpm" /* pnpm */, hint: "\u63A8\u8350" }
|
|
127
|
+
],
|
|
128
|
+
initialValue: "pnpm" /* pnpm */
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
const selectRegistry = async () => {
|
|
132
|
+
registry = await select({
|
|
133
|
+
message: "\u9009\u62E9 NPM \u955C\u50CF\u6E90",
|
|
134
|
+
options: [
|
|
135
|
+
{
|
|
136
|
+
label: "npm \u5B98\u65B9\u6E90",
|
|
137
|
+
value: ERegistry.npm,
|
|
138
|
+
hint: "\u63A8\u8350"
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
label: "\u6DD8\u5B9D\u955C\u50CF",
|
|
142
|
+
value: ERegistry.taobao
|
|
143
|
+
}
|
|
144
|
+
],
|
|
145
|
+
initialValue: ERegistry.npm
|
|
146
|
+
});
|
|
147
|
+
};
|
|
148
|
+
const selectGitTemplate = async () => {
|
|
149
|
+
const gitTemplate2 = await text({
|
|
150
|
+
message: "\u8BF7\u8F93\u5165 Git \u6A21\u677F\u540D\u79F0",
|
|
151
|
+
placeholder: "rspack-subApplicate_demo",
|
|
152
|
+
validate: (value) => {
|
|
153
|
+
if (!value.length) {
|
|
154
|
+
return "\u8BF7\u8F93\u5165\u6A21\u677F\u540D\u79F0";
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
return gitTemplate2;
|
|
159
|
+
};
|
|
160
|
+
const internalTemplatePrompts = async () => {
|
|
161
|
+
console.log("");
|
|
162
|
+
const banner = figlet.textSync("YWKF CLI", {
|
|
163
|
+
font: "ANSI Shadow",
|
|
164
|
+
horizontalLayout: "default",
|
|
165
|
+
verticalLayout: "default"
|
|
166
|
+
});
|
|
167
|
+
console.log(utils.chalk.hex("#19BDD2")(banner));
|
|
168
|
+
console.log("");
|
|
169
|
+
console.log(
|
|
170
|
+
utils.chalk.hex("#19BDD2")(" \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501")
|
|
171
|
+
);
|
|
172
|
+
console.log("");
|
|
173
|
+
console.log(
|
|
174
|
+
utils.chalk.bold.white(" \u{1F680} \u6B22\u8FCE\u4F7F\u7528 ") + utils.chalk.hex("#19BDD2").bold("\u8FD0\u7EF4\u6280\u672F\u4E2D\u5FC3\u5F00\u53D1\u90E8") + utils.chalk.bold.white(" \u9879\u76EE\u811A\u624B\u67B6\u5DE5\u5177")
|
|
175
|
+
);
|
|
176
|
+
console.log("");
|
|
177
|
+
console.log(utils.chalk.gray(" \u2728 \u5FEB\u901F\u521B\u5EFA\u6807\u51C6\u5316\u9879\u76EE\u7ED3\u6784"));
|
|
178
|
+
console.log(utils.chalk.gray(" \u26A1 \u5185\u7F6E\u6700\u4F73\u5B9E\u8DF5\u5F00\u53D1\u914D\u7F6E"));
|
|
179
|
+
console.log(utils.chalk.gray(" \u{1F3AF} \u5F00\u7BB1\u5373\u7528\u7684\u5F00\u53D1\u73AF\u5883"));
|
|
180
|
+
console.log("");
|
|
181
|
+
console.log(utils.chalk.yellow(" \u8BA9\u6211\u4EEC\u4E00\u8D77\u521B\u5EFA\u4E00\u4E2A\u65B0\u9879\u76EE\u5427\uFF01"));
|
|
182
|
+
console.log("");
|
|
183
|
+
console.log(
|
|
184
|
+
utils.chalk.hex("#19BDD2")(" \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501")
|
|
185
|
+
);
|
|
186
|
+
console.log("");
|
|
187
|
+
intro(utils.chalk.hex("#19BDD2").bold("\u5F00\u59CB\u521B\u5EFA"));
|
|
188
|
+
await setName();
|
|
189
|
+
if (isCancel(name)) {
|
|
190
|
+
exitPrompt();
|
|
191
|
+
}
|
|
192
|
+
target = path.join(cwd, name);
|
|
193
|
+
await selectAppTemplate();
|
|
194
|
+
if (isCancel(appTemplate)) {
|
|
195
|
+
exitPrompt();
|
|
196
|
+
}
|
|
197
|
+
await selectNpmClient();
|
|
198
|
+
if (isCancel(npmClient)) {
|
|
199
|
+
exitPrompt();
|
|
200
|
+
}
|
|
201
|
+
await selectRegistry();
|
|
202
|
+
if (isCancel(registry)) {
|
|
203
|
+
exitPrompt();
|
|
204
|
+
}
|
|
205
|
+
outro(utils.chalk.green(`\u2728 \u4E00\u5207\u5C31\u7EEA, \u5F00\u59CB\u521B\u5EFA\u9879\u76EE...`));
|
|
206
|
+
};
|
|
207
|
+
const useDefaultData = !!args.default;
|
|
208
|
+
const useExternalTemplate = !!args.template;
|
|
209
|
+
const useGitTemplate = !!args.git;
|
|
210
|
+
switch (true) {
|
|
211
|
+
case useExternalTemplate:
|
|
212
|
+
await selectNpmClient();
|
|
213
|
+
if (isCancel(npmClient)) {
|
|
214
|
+
exitPrompt();
|
|
215
|
+
}
|
|
216
|
+
await selectRegistry();
|
|
217
|
+
if (isCancel(registry)) {
|
|
218
|
+
exitPrompt();
|
|
219
|
+
}
|
|
220
|
+
await unpackGitTemplate({
|
|
221
|
+
template: args.template,
|
|
222
|
+
dest: target
|
|
223
|
+
});
|
|
224
|
+
break;
|
|
225
|
+
// TODO: init template from git
|
|
226
|
+
case useGitTemplate:
|
|
227
|
+
intro(utils.chalk.bgHex("#19BDD2")(" create-ywkf "));
|
|
228
|
+
await setName();
|
|
229
|
+
if (isCancel(name)) {
|
|
230
|
+
exitPrompt();
|
|
231
|
+
}
|
|
232
|
+
target = path.join(cwd, name);
|
|
233
|
+
gitTemplate = await selectGitTemplate();
|
|
234
|
+
if (isCancel(gitTemplate)) {
|
|
235
|
+
exitPrompt();
|
|
236
|
+
}
|
|
237
|
+
await selectNpmClient();
|
|
238
|
+
if (isCancel(npmClient)) {
|
|
239
|
+
exitPrompt();
|
|
240
|
+
}
|
|
241
|
+
note(
|
|
242
|
+
`\u9879\u76EE\u540D\u79F0: ${name}
|
|
243
|
+
Git\u6A21\u677F: ${gitTemplate}
|
|
244
|
+
\u5305\u7BA1\u7406\u5668: ${npmClient}`,
|
|
245
|
+
"\u{1F4CB} \u914D\u7F6E\u6458\u8981"
|
|
246
|
+
);
|
|
247
|
+
const confirmed = await confirm({
|
|
248
|
+
message: "\u786E\u8BA4\u4EE5\u4E0A\u914D\u7F6E\u5E76\u5F00\u59CB\u521B\u5EFA\u9879\u76EE?",
|
|
249
|
+
initialValue: true
|
|
250
|
+
});
|
|
251
|
+
if (isCancel(confirmed) || !confirmed) {
|
|
252
|
+
outro(utils.chalk.yellow("\u5DF2\u53D6\u6D88\u521B\u5EFA"));
|
|
253
|
+
process.exit(0);
|
|
254
|
+
}
|
|
255
|
+
outro(utils.chalk.green(`\u2728 \u5F00\u59CB\u521B\u5EFA\u9879\u76EE...`));
|
|
256
|
+
registry = ERegistry.git;
|
|
257
|
+
await unpackGitTemplate({
|
|
258
|
+
template: gitTemplate,
|
|
259
|
+
dest: target
|
|
260
|
+
});
|
|
261
|
+
break;
|
|
262
|
+
default:
|
|
263
|
+
if (!useDefaultData) {
|
|
264
|
+
await internalTemplatePrompts();
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
const version = pkg.version;
|
|
268
|
+
const monorepoRoot = await detectMonorepoRoot({ target });
|
|
269
|
+
const inMonorepo = !!monorepoRoot;
|
|
270
|
+
const projectRoot = inMonorepo ? monorepoRoot : target;
|
|
271
|
+
const shouldInitGit = args.git !== false;
|
|
272
|
+
const withHusky = shouldInitGit && !inMonorepo;
|
|
273
|
+
let pnpmExtraNpmrc = "";
|
|
274
|
+
const isPnpm = npmClient === "pnpm" /* pnpm */;
|
|
275
|
+
let pnpmMajorVersion;
|
|
276
|
+
let pnpmVersion;
|
|
277
|
+
if (isPnpm) {
|
|
278
|
+
pnpmVersion = await getPnpmVersion();
|
|
279
|
+
pnpmMajorVersion = parseInt(pnpmVersion.split(".")[0], 10);
|
|
280
|
+
utils.logger.debug(`pnpm version: ${pnpmVersion}`);
|
|
281
|
+
if (pnpmMajorVersion === 7) {
|
|
282
|
+
pnpmExtraNpmrc = `strict-peer-dependencies=false`;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
const injectInternalTemplateFiles = async () => {
|
|
286
|
+
const generator = new utils.BaseGenerator({
|
|
287
|
+
path: path.join(__dirname, "templates", appTemplate),
|
|
288
|
+
target,
|
|
289
|
+
slient: true,
|
|
290
|
+
data: useDefaultData ? defaultData : {
|
|
291
|
+
version: version.includes("-canary.") ? version : `^${version}`,
|
|
292
|
+
npmClient,
|
|
293
|
+
registry,
|
|
294
|
+
author,
|
|
295
|
+
email,
|
|
296
|
+
withHusky,
|
|
297
|
+
extraNpmrc: isPnpm ? pnpmExtraNpmrc : "",
|
|
298
|
+
pluginName,
|
|
299
|
+
name
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
await generator.run();
|
|
303
|
+
};
|
|
304
|
+
if (!useExternalTemplate) {
|
|
305
|
+
await injectInternalTemplateFiles();
|
|
306
|
+
}
|
|
307
|
+
const context = {
|
|
308
|
+
target,
|
|
309
|
+
projectRoot
|
|
310
|
+
};
|
|
311
|
+
if (!withHusky) {
|
|
312
|
+
await removeHusky(context);
|
|
313
|
+
}
|
|
314
|
+
if (inMonorepo) {
|
|
315
|
+
await moveNpmrc(context);
|
|
316
|
+
}
|
|
317
|
+
if (shouldInitGit) {
|
|
318
|
+
await initGit(context);
|
|
319
|
+
} else {
|
|
320
|
+
utils.logger.info(`Skip Git init`);
|
|
321
|
+
}
|
|
322
|
+
const isPnpm8 = pnpmMajorVersion === 8;
|
|
323
|
+
const pnpmHighestResolutionMinVersion = "8.7.0";
|
|
324
|
+
const isPnpmHighestResolution = isPnpm8 && utils.semver.gte(pnpmVersion, pnpmHighestResolutionMinVersion);
|
|
325
|
+
if (!useDefaultData && args.install !== false) {
|
|
326
|
+
if (isPnpm8 && !isPnpmHighestResolution) {
|
|
327
|
+
await installAndUpdateWithPnpm(target);
|
|
328
|
+
} else {
|
|
329
|
+
utils.installWithNpmClient({ npmClient, cwd: target });
|
|
330
|
+
}
|
|
331
|
+
} else {
|
|
332
|
+
utils.logger.info(`Skip install deps`);
|
|
333
|
+
if (isPnpm8) {
|
|
334
|
+
utils.logger.warn(
|
|
335
|
+
utils.chalk.yellow(
|
|
336
|
+
`You current using pnpm v8, it will install minimal version of dependencies`
|
|
337
|
+
)
|
|
338
|
+
);
|
|
339
|
+
utils.logger.warn(
|
|
340
|
+
utils.chalk.green(
|
|
341
|
+
`Recommended that you run ${utils.chalk.bold.cyan(
|
|
342
|
+
"pnpm up -L"
|
|
343
|
+
)} to install latest version of dependencies`
|
|
344
|
+
)
|
|
345
|
+
);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
printSuccess({ name, target, npmClient });
|
|
349
|
+
};
|
|
350
|
+
function printSuccess(opts) {
|
|
351
|
+
const { name, target, npmClient } = opts;
|
|
352
|
+
const { outro } = utils.clackPrompts;
|
|
353
|
+
console.log("");
|
|
354
|
+
console.log(
|
|
355
|
+
boxen(
|
|
356
|
+
utils.chalk.green.bold("\u{1F389} \u9879\u76EE\u521B\u5EFA\u6210\u529F\uFF01\n\n") + utils.chalk.white("\u{1F4E6} \u9879\u76EE\u4FE1\u606F\n") + utils.chalk.gray("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n") + utils.chalk.cyan("\u540D\u79F0: ") + utils.chalk.white(name) + "\n" + utils.chalk.cyan("\u8DEF\u5F84: ") + utils.chalk.white(target) + "\n" + utils.chalk.cyan("\u5305\u7BA1\u7406\u5668: ") + utils.chalk.white(npmClient) + "\n\n" + utils.chalk.white("\u{1F680} \u5FEB\u901F\u5F00\u59CB\n") + utils.chalk.gray("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n") + utils.chalk.white("1. \u8FDB\u5165\u9879\u76EE\u76EE\u5F55\n") + utils.chalk.cyan(` cd ${name}
|
|
357
|
+
|
|
358
|
+
`) + utils.chalk.white("2. \u542F\u52A8\u5F00\u53D1\u670D\u52A1\u5668\n") + utils.chalk.cyan(` ${npmClient} run dev
|
|
359
|
+
|
|
360
|
+
`) + utils.chalk.white("3. \u6784\u5EFA\u751F\u4EA7\u7248\u672C\n") + utils.chalk.cyan(` ${npmClient} run build`),
|
|
361
|
+
{
|
|
362
|
+
padding: 1,
|
|
363
|
+
margin: 1,
|
|
364
|
+
borderStyle: "round",
|
|
365
|
+
borderColor: "cyan",
|
|
366
|
+
align: "left"
|
|
367
|
+
}
|
|
368
|
+
)
|
|
369
|
+
);
|
|
370
|
+
outro(utils.chalk.green("\u2728 \u795D\u4F60\u5F00\u53D1\u6109\u5FEB\uFF01Happy Coding! \u{1F3A8}"));
|
|
371
|
+
}
|
|
372
|
+
async function detectMonorepoRoot(opts) {
|
|
373
|
+
const { target } = opts;
|
|
374
|
+
const rootPkg = await utils.pkgUp.pkgUp({ cwd: path.dirname(target) });
|
|
375
|
+
if (!rootPkg) {
|
|
376
|
+
return null;
|
|
377
|
+
}
|
|
378
|
+
const rootDir = path.dirname(rootPkg);
|
|
379
|
+
if (utils.tryPaths([
|
|
380
|
+
path.join(rootDir, "lerna.json"),
|
|
381
|
+
path.join(rootDir, "pnpm-workspace.yaml")
|
|
382
|
+
])) {
|
|
383
|
+
return rootDir;
|
|
384
|
+
}
|
|
385
|
+
return null;
|
|
386
|
+
}
|
|
387
|
+
async function moveNpmrc(opts) {
|
|
388
|
+
const { target, projectRoot } = opts;
|
|
389
|
+
const sourceNpmrc = path.join(target, "./.npmrc");
|
|
390
|
+
const targetNpmrc = path.join(projectRoot, "./.npmrc");
|
|
391
|
+
if (!fs.existsSync(targetNpmrc)) {
|
|
392
|
+
await utils.fsExtra.copyFile(sourceNpmrc, targetNpmrc);
|
|
393
|
+
}
|
|
394
|
+
await utils.fsExtra.remove(sourceNpmrc);
|
|
395
|
+
}
|
|
396
|
+
async function initGit(opts) {
|
|
397
|
+
const { projectRoot } = opts;
|
|
398
|
+
const isGit = fs.existsSync(path.join(projectRoot, ".git"));
|
|
399
|
+
if (isGit) return;
|
|
400
|
+
try {
|
|
401
|
+
await utils.execa.execa("git", ["init"], { cwd: projectRoot });
|
|
402
|
+
} catch {
|
|
403
|
+
utils.logger.error(`Initial the git repo failed`);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
async function removeHusky(opts) {
|
|
407
|
+
const dir = path.join(opts.target, "./.husky");
|
|
408
|
+
if (fs.existsSync(dir)) {
|
|
409
|
+
await utils.fsExtra.remove(dir);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
async function installAndUpdateWithPnpm(cwd) {
|
|
413
|
+
await utils.execa.execa("pnpm", ["up", "-L"], { cwd, stdio: "inherit" });
|
|
414
|
+
}
|
|
415
|
+
async function getPnpmVersion() {
|
|
416
|
+
try {
|
|
417
|
+
const { stdout } = await utils.execa.execa("pnpm", ["--version"]);
|
|
418
|
+
return stdout.trim();
|
|
419
|
+
} catch (e) {
|
|
420
|
+
throw new Error("Please install pnpm first", { cause: e });
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
module.exports = index;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default {};
|
package/dist/templates/index.css
CHANGED
|
@@ -1,282 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
padding: 0;
|
|
4
|
-
margin: 0;
|
|
5
|
-
width: 100%;
|
|
6
|
-
height: 100%;
|
|
7
|
-
font-family: PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
#root {
|
|
11
|
-
height: 100%;
|
|
12
|
-
width: 100%;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
p {
|
|
16
|
-
margin: 0;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
* {
|
|
20
|
-
-webkit-font-smoothing: antialiased;
|
|
21
|
-
-moz-osx-font-smoothing: grayscale;
|
|
22
|
-
box-sizing: border-box;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
main {
|
|
26
|
-
flex: 1;
|
|
27
|
-
display: flex;
|
|
28
|
-
flex-direction: column;
|
|
29
|
-
justify-content: center;
|
|
30
|
-
align-items: center;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
.module__app {
|
|
35
|
-
height: calc(100vh - 50px) !important;
|
|
36
|
-
position: relative;
|
|
37
|
-
width: 100%;
|
|
38
|
-
-webkit-box-pack: start;
|
|
39
|
-
place-content: flex-start;
|
|
40
|
-
align-items: flex-start;
|
|
41
|
-
-webkit-font-smoothing: antialiased;
|
|
42
|
-
overflow: auto;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
:root {
|
|
46
|
-
--red-1: 255, 236, 232;
|
|
47
|
-
--red-2: 253, 205, 197;
|
|
48
|
-
--red-3: 251, 172, 163;
|
|
49
|
-
--red-4: 249, 137, 129;
|
|
50
|
-
--red-5: 247, 101, 96;
|
|
51
|
-
--red-6: 245, 63, 63;
|
|
52
|
-
--red-7: 203, 39, 45;
|
|
53
|
-
--red-8: 161, 21, 30;
|
|
54
|
-
--red-9: 119, 8, 19;
|
|
55
|
-
--red-10: 77, 0, 10;
|
|
56
|
-
--orangered-1: 255, 243, 232;
|
|
57
|
-
--orangered-2: 253, 221, 195;
|
|
58
|
-
--orangered-3: 252, 197, 159;
|
|
59
|
-
--orangered-4: 250, 172, 123;
|
|
60
|
-
--orangered-5: 249, 144, 87;
|
|
61
|
-
--orangered-6: 247, 114, 52;
|
|
62
|
-
--orangered-7: 204, 81, 32;
|
|
63
|
-
--orangered-8: 162, 53, 17;
|
|
64
|
-
--orangered-9: 119, 31, 6;
|
|
65
|
-
--orangered-10: 77, 14, 0;
|
|
66
|
-
--orange-1: 255, 247, 232;
|
|
67
|
-
--orange-2: 255, 228, 186;
|
|
68
|
-
--orange-3: 255, 207, 139;
|
|
69
|
-
--orange-4: 255, 182, 93;
|
|
70
|
-
--orange-5: 255, 154, 46;
|
|
71
|
-
--orange-6: 255, 125, 0;
|
|
72
|
-
--orange-7: 210, 95, 0;
|
|
73
|
-
--orange-8: 166, 69, 0;
|
|
74
|
-
--orange-9: 121, 46, 0;
|
|
75
|
-
--orange-10: 77, 27, 0;
|
|
76
|
-
--gold-1: 255, 252, 232;
|
|
77
|
-
--gold-2: 253, 244, 191;
|
|
78
|
-
--gold-3: 252, 233, 150;
|
|
79
|
-
--gold-4: 250, 220, 109;
|
|
80
|
-
--gold-5: 249, 204, 69;
|
|
81
|
-
--gold-6: 247, 186, 30;
|
|
82
|
-
--gold-7: 204, 146, 19;
|
|
83
|
-
--gold-8: 162, 109, 10;
|
|
84
|
-
--gold-9: 119, 75, 4;
|
|
85
|
-
--gold-10: 77, 45, 0;
|
|
86
|
-
--yellow-1: 254, 255, 232;
|
|
87
|
-
--yellow-2: 254, 254, 190;
|
|
88
|
-
--yellow-3: 253, 250, 148;
|
|
89
|
-
--yellow-4: 252, 242, 107;
|
|
90
|
-
--yellow-5: 251, 232, 66;
|
|
91
|
-
--yellow-6: 250, 220, 25;
|
|
92
|
-
--yellow-7: 207, 175, 15;
|
|
93
|
-
--yellow-8: 163, 132, 8;
|
|
94
|
-
--yellow-9: 120, 93, 3;
|
|
95
|
-
--yellow-10: 77, 56, 0;
|
|
96
|
-
--lime-1: 252, 255, 232;
|
|
97
|
-
--lime-2: 237, 248, 187;
|
|
98
|
-
--lime-3: 220, 241, 144;
|
|
99
|
-
--lime-4: 201, 233, 104;
|
|
100
|
-
--lime-5: 181, 226, 65;
|
|
101
|
-
--lime-6: 159, 219, 29;
|
|
102
|
-
--lime-7: 126, 183, 18;
|
|
103
|
-
--lime-8: 95, 148, 10;
|
|
104
|
-
--lime-9: 67, 112, 4;
|
|
105
|
-
--lime-10: 42, 77, 0;
|
|
106
|
-
--green-1: 232, 255, 234;
|
|
107
|
-
--green-2: 175, 240, 181;
|
|
108
|
-
--green-3: 123, 225, 136;
|
|
109
|
-
--green-4: 76, 210, 99;
|
|
110
|
-
--green-5: 35, 195, 67;
|
|
111
|
-
--green-6: 0, 180, 42;
|
|
112
|
-
--green-7: 0, 154, 41;
|
|
113
|
-
--green-8: 0, 128, 38;
|
|
114
|
-
--green-9: 0, 102, 34;
|
|
115
|
-
--green-10: 0, 77, 28;
|
|
116
|
-
--cyan-1: 232, 255, 251;
|
|
117
|
-
--cyan-2: 183, 244, 236;
|
|
118
|
-
--cyan-3: 137, 233, 224;
|
|
119
|
-
--cyan-4: 94, 223, 214;
|
|
120
|
-
--cyan-5: 55, 212, 207;
|
|
121
|
-
--cyan-6: 20, 201, 201;
|
|
122
|
-
--cyan-7: 13, 165, 170;
|
|
123
|
-
--cyan-8: 7, 130, 139;
|
|
124
|
-
--cyan-9: 3, 97, 108;
|
|
125
|
-
--cyan-10: 0, 66, 77;
|
|
126
|
-
--blue-1: 232, 247, 255;
|
|
127
|
-
--blue-2: 195, 231, 254;
|
|
128
|
-
--blue-3: 159, 212, 253;
|
|
129
|
-
--blue-4: 123, 192, 252;
|
|
130
|
-
--blue-5: 87, 169, 251;
|
|
131
|
-
--blue-6: 52, 145, 250;
|
|
132
|
-
--blue-7: 32, 108, 207;
|
|
133
|
-
--blue-8: 17, 75, 163;
|
|
134
|
-
--blue-9: 6, 48, 120;
|
|
135
|
-
--blue-10: 0, 26, 77;
|
|
136
|
-
--arcoblue-1: 232, 243, 255;
|
|
137
|
-
--arcoblue-2: 190, 218, 255;
|
|
138
|
-
--arcoblue-3: 148, 191, 255;
|
|
139
|
-
--arcoblue-4: 106, 161, 255;
|
|
140
|
-
--arcoblue-5: 64, 128, 255;
|
|
141
|
-
--arcoblue-6: 22, 93, 255;
|
|
142
|
-
--arcoblue-7: 14, 66, 210;
|
|
143
|
-
--arcoblue-8: 7, 44, 166;
|
|
144
|
-
--arcoblue-9: 3, 26, 121;
|
|
145
|
-
--arcoblue-10: 0, 13, 77;
|
|
146
|
-
--purple-1: 245, 232, 255;
|
|
147
|
-
--purple-2: 221, 190, 246;
|
|
148
|
-
--purple-3: 195, 150, 237;
|
|
149
|
-
--purple-4: 168, 113, 227;
|
|
150
|
-
--purple-5: 141, 78, 218;
|
|
151
|
-
--purple-6: 114, 46, 209;
|
|
152
|
-
--purple-7: 85, 29, 176;
|
|
153
|
-
--purple-8: 60, 16, 143;
|
|
154
|
-
--purple-9: 39, 6, 110;
|
|
155
|
-
--purple-10: 22, 0, 77;
|
|
156
|
-
--pinkpurple-1: 255, 232, 251;
|
|
157
|
-
--pinkpurple-2: 247, 186, 239;
|
|
158
|
-
--pinkpurple-3: 240, 142, 230;
|
|
159
|
-
--pinkpurple-4: 232, 101, 223;
|
|
160
|
-
--pinkpurple-5: 225, 62, 219;
|
|
161
|
-
--pinkpurple-6: 217, 26, 217;
|
|
162
|
-
--pinkpurple-7: 176, 16, 182;
|
|
163
|
-
--pinkpurple-8: 138, 9, 147;
|
|
164
|
-
--pinkpurple-9: 101, 3, 112;
|
|
165
|
-
--pinkpurple-10: 66, 0, 77;
|
|
166
|
-
--magenta-1: 255, 232, 241;
|
|
167
|
-
--magenta-2: 253, 194, 219;
|
|
168
|
-
--magenta-3: 251, 157, 199;
|
|
169
|
-
--magenta-4: 249, 121, 183;
|
|
170
|
-
--magenta-5: 247, 84, 168;
|
|
171
|
-
--magenta-6: 245, 49, 157;
|
|
172
|
-
--magenta-7: 203, 30, 131;
|
|
173
|
-
--magenta-8: 161, 16, 105;
|
|
174
|
-
--magenta-9: 119, 6, 79;
|
|
175
|
-
--magenta-10: 77, 0, 52;
|
|
176
|
-
--gray-1: 247, 248, 250;
|
|
177
|
-
--gray-2: 242, 243, 245;
|
|
178
|
-
--gray-4: 201, 205, 212;
|
|
179
|
-
--gray-5: 169, 174, 184;
|
|
180
|
-
--gray-6: 134, 144, 156;
|
|
181
|
-
--gray-7: 107, 119, 133;
|
|
182
|
-
--gray-8: 78, 89, 105;
|
|
183
|
-
--gray-9: 39, 46, 59;
|
|
184
|
-
--gray-10: 29, 33, 41;
|
|
185
|
-
--data-2: var(--arcoblue-2);
|
|
186
|
-
--data-3: 85, 197, 253;
|
|
187
|
-
--data-4: 156, 220, 252;
|
|
188
|
-
--data-8: var(--green-2);
|
|
189
|
-
--data-10: var(--purple-2);
|
|
190
|
-
--success-1: var(--green-1);
|
|
191
|
-
--success-2: var(--green-2);
|
|
192
|
-
--success-3: var(--green-3);
|
|
193
|
-
--success-4: var(--green-4);
|
|
194
|
-
--success-5: var(--green-5);
|
|
195
|
-
--success-6: var(--green-6);
|
|
196
|
-
--success-7: var(--green-7);
|
|
197
|
-
--success-8: var(--green-8);
|
|
198
|
-
--success-9: var(--green-9);
|
|
199
|
-
--success-10: var(--green-10);
|
|
200
|
-
--primary-1: var(--arcoblue-1);
|
|
201
|
-
--primary-2: var(--arcoblue-2);
|
|
202
|
-
--primary-3: var(--arcoblue-3);
|
|
203
|
-
--primary-4: var(--arcoblue-4);
|
|
204
|
-
--primary-5: var(--arcoblue-5);
|
|
205
|
-
--primary-6: var(--arcoblue-6);
|
|
206
|
-
--primary-7: var(--arcoblue-7);
|
|
207
|
-
--primary-8: var(--arcoblue-8);
|
|
208
|
-
--primary-9: var(--arcoblue-9);
|
|
209
|
-
--primary-10: var(--arcoblue-10);
|
|
210
|
-
--danger-1: var(--red-1);
|
|
211
|
-
--danger-2: var(--red-2);
|
|
212
|
-
--danger-3: var(--red-3);
|
|
213
|
-
--danger-4: var(--red-4);
|
|
214
|
-
--danger-5: var(--red-5);
|
|
215
|
-
--danger-6: var(--red-6);
|
|
216
|
-
--danger-7: var(--red-7);
|
|
217
|
-
--danger-8: var(--red-8);
|
|
218
|
-
--danger-9: var(--red-9);
|
|
219
|
-
--danger-10: var(--red-10);
|
|
220
|
-
--warning-1: var(--orange-1);
|
|
221
|
-
--warning-2: var(--orange-2);
|
|
222
|
-
--warning-3: var(--orange-3);
|
|
223
|
-
--warning-4: var(--orange-4);
|
|
224
|
-
--warning-5: var(--orange-5);
|
|
225
|
-
--warning-6: var(--orange-6);
|
|
226
|
-
--warning-7: var(--orange-7);
|
|
227
|
-
--warning-8: var(--orange-8);
|
|
228
|
-
--warning-9: var(--orange-9);
|
|
229
|
-
--warning-10: var(--orange-10);
|
|
230
|
-
--link-1: var(--arcoblue-1);
|
|
231
|
-
--link-2: var(--arcoblue-2);
|
|
232
|
-
--link-3: var(--arcoblue-3);
|
|
233
|
-
--link-4: var(--arcoblue-4);
|
|
234
|
-
--link-5: var(--arcoblue-5);
|
|
235
|
-
--link-6: var(--arcoblue-6);
|
|
236
|
-
--link-7: var(--arcoblue-7);
|
|
237
|
-
--link-8: var(--arcoblue-8);
|
|
238
|
-
--link-9: var(--arcoblue-9);
|
|
239
|
-
--link-10: var(--arcoblue-10);
|
|
240
|
-
--data-1: var(--arcoblue-5);
|
|
241
|
-
--data-5: var(--orange-6);
|
|
242
|
-
--data-6: var(--orange-3);
|
|
243
|
-
--data-7: var(--green-4);
|
|
244
|
-
--data-9: var(--purple-4);
|
|
245
|
-
--data-11: var(--gold-6);
|
|
246
|
-
--data-12: var(--gold-4);
|
|
247
|
-
--data-13: var(--lime-6);
|
|
248
|
-
--data-14: var(--lime-4);
|
|
249
|
-
--data-15: var(--magenta-4);
|
|
250
|
-
--data-16: var(--magenta-3);
|
|
251
|
-
--data-17: var(--cyan-6);
|
|
252
|
-
--data-18: var(--cyan-3);
|
|
253
|
-
--data-19: var(--pinkpurple-4);
|
|
254
|
-
--data-20: var(--pinkpurple-2);
|
|
255
|
-
--container--layout--padding: 20px 32px;
|
|
256
|
-
--border-radius-medium: 4px;
|
|
257
|
-
--color-border-3: #dde2e9;
|
|
258
|
-
--primary-5: 66, 129, 255;
|
|
259
|
-
--color-text-1: rgb(29, 33, 41);
|
|
260
|
-
--color-fill-2: rgb(242, 243, 245);
|
|
261
|
-
--gray-3: 229, 230, 235;
|
|
262
|
-
--color-neutral-3: rgb(var(--gray-3));
|
|
263
|
-
--container--form--layout--header-height: 64px;
|
|
264
|
-
--contexify-zIndex: 666 !important;
|
|
265
|
-
--contexify-menu-minWidth: 220px !important;
|
|
266
|
-
--contexify-menu-padding: 6px !important;
|
|
267
|
-
--contexify-menu-radius: var(--border-radius-medium) !important;
|
|
268
|
-
--contexify-menu-bgColor: #fff !important;
|
|
269
|
-
--contexify-menu-shadow: 0 4px 10px rgba(0, 0, 0, .1) !important;
|
|
270
|
-
--contexify-menu-negatePadding: var(--contexify-menu-padding) !important;
|
|
271
|
-
--contexify-separator-color: rgba(0, 0, 0, .2) !important;
|
|
272
|
-
--contexify-separator-margin: 5px !important;
|
|
273
|
-
--contexify-itemContent-padding: 6px !important;
|
|
274
|
-
--contexify-activeItem-radius: 4px !important;
|
|
275
|
-
--contexify-item-color: #333 !important;
|
|
276
|
-
--contexify-activeItem-color: var(--color-text-1) !important;
|
|
277
|
-
--contexify-activeItem-bgColor: var(--color-fill-2) !important;
|
|
278
|
-
--contexify-rightSlot-color: #6f6e77 !important;
|
|
279
|
-
--contexify-activeRightSlot-color: #fff !important;
|
|
280
|
-
--contexify-arrow-color: #6f6e77 !important;
|
|
281
|
-
--contexify-activeArrow-color: #fff !important
|
|
282
|
-
}
|
|
1
|
+
@import "tailwindcss";
|
|
2
|
+
@variant dark (&:where([data-theme="dark"], [data-theme="dark"] *));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default {};
|