zixulu 0.0.1 → 0.0.2
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 +48 -40
- package/package.json +1 -1
- package/src/index.ts +46 -37
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import { Command } from 'commander';
|
|
|
3
3
|
import { createPromptModule } from 'inquirer';
|
|
4
4
|
import { readdirSync, mkdirSync, writeFileSync, statSync, readFileSync } from 'fs';
|
|
5
5
|
|
|
6
|
-
var name = "
|
|
6
|
+
var name = "zixulu";
|
|
7
7
|
var version = "0.0.1";
|
|
8
8
|
var main = "index.js";
|
|
9
9
|
var license = "MIT";
|
|
@@ -41,6 +41,11 @@ var pkg = {
|
|
|
41
41
|
const prompt = createPromptModule();
|
|
42
42
|
const packageNameReg = /^[a-z0-9]{1}[-_a-z0-9]{0,213}$/i;
|
|
43
43
|
const JavaScriptTargets = ["ES2015", "ES2016", "ES2017", "ES2018", "ES2019", "ES2020", "ES2021", "ES2022", "ES2023", "ESNext"];
|
|
44
|
+
async function getPackageLatestVersion(name) {
|
|
45
|
+
const response = await fetch(`https://registry.npmjs.org/${name}`);
|
|
46
|
+
const data = await response.json();
|
|
47
|
+
return data["dist-tags"].latest;
|
|
48
|
+
}
|
|
44
49
|
function getBuildJS(answer) {
|
|
45
50
|
const { target, css } = answer;
|
|
46
51
|
if (css) {
|
|
@@ -97,37 +102,38 @@ execSync("npx tsc --sourceMap -module ${target} -outDir dist/esm && npx tsc --so
|
|
|
97
102
|
`;
|
|
98
103
|
}
|
|
99
104
|
async function getPackageJson(answer) {
|
|
100
|
-
const { name } = answer;
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
"
|
|
128
|
-
|
|
129
|
-
}
|
|
130
|
-
`;
|
|
105
|
+
const { name, react } = answer;
|
|
106
|
+
const info = {
|
|
107
|
+
name,
|
|
108
|
+
version: "0.0.1",
|
|
109
|
+
main: "dist/cjs/index.js",
|
|
110
|
+
module: "dist/esm/index.js",
|
|
111
|
+
types: "dist/index.d.ts",
|
|
112
|
+
license: "MIT",
|
|
113
|
+
type: "module",
|
|
114
|
+
exports: {
|
|
115
|
+
".": {
|
|
116
|
+
import: {
|
|
117
|
+
types: "./dist/index.d.ts",
|
|
118
|
+
default: "./dist/esm/index.js"
|
|
119
|
+
},
|
|
120
|
+
require: {
|
|
121
|
+
types: "./dist/index.d.ts",
|
|
122
|
+
default: "./dist/cjs/index.js"
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
scripts: {
|
|
127
|
+
build: "node ./build.js"
|
|
128
|
+
},
|
|
129
|
+
devDependencies: {}
|
|
130
|
+
};
|
|
131
|
+
if (react) {
|
|
132
|
+
info.devDependencies["@types/react"] = `^${await getPackageLatestVersion("@types/react")}`;
|
|
133
|
+
info.devDependencies["@types/react-dom"] = `^${await getPackageLatestVersion("@types/react-dom")}`;
|
|
134
|
+
}
|
|
135
|
+
info.devDependencies.typescript = `^${await getPackageLatestVersion("typescript")}`;
|
|
136
|
+
return JSON.stringify(info, null, 4);
|
|
131
137
|
}
|
|
132
138
|
function getTSConfig(answer) {
|
|
133
139
|
const { react, target } = answer;
|
|
@@ -277,7 +283,7 @@ function getProjectAnswer(...exclude) {
|
|
|
277
283
|
type: "confirm",
|
|
278
284
|
name: "css",
|
|
279
285
|
message: "是否打包 CSS:",
|
|
280
|
-
default:
|
|
286
|
+
default: false
|
|
281
287
|
},
|
|
282
288
|
{
|
|
283
289
|
type: "confirm",
|
|
@@ -303,8 +309,8 @@ program
|
|
|
303
309
|
.description("初始化 npm 项目")
|
|
304
310
|
.option("-n --name <name>", "指定项目名称")
|
|
305
311
|
.option("-r --react", "指定为 react 项目")
|
|
312
|
+
.option("-c --css", "打包 CSS")
|
|
306
313
|
.option("-t --target <target>", "指定 JavaScript 版本")
|
|
307
|
-
.option("--no-css", "不打包 CSS")
|
|
308
314
|
.option("--no-esm", "不打包 ES Module")
|
|
309
315
|
.option("--no-cjs", "不打包 Common JS")
|
|
310
316
|
.action(async (options) => {
|
|
@@ -319,15 +325,15 @@ program
|
|
|
319
325
|
initAnswer.react = true;
|
|
320
326
|
exclude.push("react");
|
|
321
327
|
}
|
|
328
|
+
if ("css" in options) {
|
|
329
|
+
initAnswer.css = true;
|
|
330
|
+
exclude.push("css");
|
|
331
|
+
}
|
|
322
332
|
if ("target" in options) {
|
|
323
333
|
validateTarget(options.target);
|
|
324
334
|
exclude.push("target");
|
|
325
335
|
initAnswer.target = options.target.trim().toUpperCase();
|
|
326
336
|
}
|
|
327
|
-
if (options.css === false) {
|
|
328
|
-
exclude.push("css");
|
|
329
|
-
initAnswer.css = false;
|
|
330
|
-
}
|
|
331
337
|
if (options.esm === false) {
|
|
332
338
|
exclude.push("esm");
|
|
333
339
|
initAnswer.esm = false;
|
|
@@ -343,14 +349,15 @@ program
|
|
|
343
349
|
mkdirSync(`./${name}`);
|
|
344
350
|
}
|
|
345
351
|
mkdirSync(`./${name}/src`);
|
|
346
|
-
writeFileSync(`./${name}/src/index.${react ? "tsx" : "ts"}`, "");
|
|
352
|
+
writeFileSync(`./${name}/src/index.${react ? "tsx" : "ts"}`, 'export default "Hello, world!"');
|
|
347
353
|
writeFileSync(`./${name}/build.js`, getBuildJS(answer));
|
|
348
354
|
writeFileSync(`./${name}/package.json`, await getPackageJson(answer));
|
|
349
355
|
writeFileSync(`./${name}/tsconfig.json`, getTSConfig(answer));
|
|
356
|
+
console.log("创建项目成功");
|
|
350
357
|
});
|
|
351
358
|
program
|
|
352
359
|
.command("build")
|
|
353
|
-
.description("
|
|
360
|
+
.description("更新打包命令")
|
|
354
361
|
.option("--no-css", "不打包 CSS")
|
|
355
362
|
.action(options => {
|
|
356
363
|
const { css } = options;
|
|
@@ -365,5 +372,6 @@ program
|
|
|
365
372
|
const config = readFileSync("./tsconfig.json", "utf-8");
|
|
366
373
|
const target = config.match(/"target":[ ]*?"(.+?)"/i)[1].toUpperCase();
|
|
367
374
|
writeFileSync("./build.js", getBuildJS({ target, css }));
|
|
375
|
+
console.log("更新打包命令成功");
|
|
368
376
|
});
|
|
369
377
|
program.parse();
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -22,6 +22,12 @@ interface ProjectAnswer {
|
|
|
22
22
|
|
|
23
23
|
const JavaScriptTargets: JavaScriptTarget[] = ["ES2015", "ES2016", "ES2017", "ES2018", "ES2019", "ES2020", "ES2021", "ES2022", "ES2023", "ESNext"]
|
|
24
24
|
|
|
25
|
+
async function getPackageLatestVersion(name: string) {
|
|
26
|
+
const response = await fetch(`https://registry.npmjs.org/${name}`)
|
|
27
|
+
const data = await response.json()
|
|
28
|
+
return data["dist-tags"].latest
|
|
29
|
+
}
|
|
30
|
+
|
|
25
31
|
function getBuildJS(answer: Pick<ProjectAnswer, "target" | "css">) {
|
|
26
32
|
const { target, css } = answer
|
|
27
33
|
if (css) {
|
|
@@ -79,37 +85,38 @@ execSync("npx tsc --sourceMap -module ${target} -outDir dist/esm && npx tsc --so
|
|
|
79
85
|
}
|
|
80
86
|
|
|
81
87
|
async function getPackageJson(answer: ProjectAnswer) {
|
|
82
|
-
const { name } = answer
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
"default": "./dist/cjs/index.js"
|
|
88
|
+
const { name, react } = answer
|
|
89
|
+
const info: any = {
|
|
90
|
+
name,
|
|
91
|
+
version: "0.0.1",
|
|
92
|
+
main: "dist/cjs/index.js",
|
|
93
|
+
module: "dist/esm/index.js",
|
|
94
|
+
types: "dist/index.d.ts",
|
|
95
|
+
license: "MIT",
|
|
96
|
+
type: "module",
|
|
97
|
+
exports: {
|
|
98
|
+
".": {
|
|
99
|
+
import: {
|
|
100
|
+
types: "./dist/index.d.ts",
|
|
101
|
+
default: "./dist/esm/index.js"
|
|
102
|
+
},
|
|
103
|
+
require: {
|
|
104
|
+
types: "./dist/index.d.ts",
|
|
105
|
+
default: "./dist/cjs/index.js"
|
|
106
|
+
}
|
|
102
107
|
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
"devDependencies": {
|
|
109
|
-
"typescript": "^${data["dist-tags"].latest}"
|
|
108
|
+
},
|
|
109
|
+
scripts: {
|
|
110
|
+
build: "node ./build.js"
|
|
111
|
+
},
|
|
112
|
+
devDependencies: {}
|
|
110
113
|
}
|
|
111
|
-
|
|
112
|
-
`
|
|
114
|
+
if (react) {
|
|
115
|
+
info.devDependencies["@types/react"] = `^${await getPackageLatestVersion("@types/react")}`
|
|
116
|
+
info.devDependencies["@types/react-dom"] = `^${await getPackageLatestVersion("@types/react-dom")}`
|
|
117
|
+
}
|
|
118
|
+
info.devDependencies.typescript = `^${await getPackageLatestVersion("typescript")}`
|
|
119
|
+
return JSON.stringify(info, null, 4)
|
|
113
120
|
}
|
|
114
121
|
|
|
115
122
|
function getTSConfig(answer: ProjectAnswer) {
|
|
@@ -263,7 +270,7 @@ function getProjectAnswer<T extends keyof ProjectAnswer>(...exclude: T[]): Promi
|
|
|
263
270
|
type: "confirm",
|
|
264
271
|
name: "css",
|
|
265
272
|
message: "是否打包 CSS:",
|
|
266
|
-
default:
|
|
273
|
+
default: false
|
|
267
274
|
},
|
|
268
275
|
{
|
|
269
276
|
type: "confirm",
|
|
@@ -294,8 +301,8 @@ program
|
|
|
294
301
|
.description("初始化 npm 项目")
|
|
295
302
|
.option("-n --name <name>", "指定项目名称")
|
|
296
303
|
.option("-r --react", "指定为 react 项目")
|
|
304
|
+
.option("-c --css", "打包 CSS")
|
|
297
305
|
.option("-t --target <target>", "指定 JavaScript 版本")
|
|
298
|
-
.option("--no-css", "不打包 CSS")
|
|
299
306
|
.option("--no-esm", "不打包 ES Module")
|
|
300
307
|
.option("--no-cjs", "不打包 Common JS")
|
|
301
308
|
.action(async (options: Partial<ProjectAnswer>) => {
|
|
@@ -310,15 +317,15 @@ program
|
|
|
310
317
|
initAnswer.react = true
|
|
311
318
|
exclude.push("react")
|
|
312
319
|
}
|
|
320
|
+
if ("css" in options) {
|
|
321
|
+
initAnswer.css = true
|
|
322
|
+
exclude.push("css")
|
|
323
|
+
}
|
|
313
324
|
if ("target" in options) {
|
|
314
325
|
validateTarget(options.target!)
|
|
315
326
|
exclude.push("target")
|
|
316
327
|
initAnswer.target = options.target!.trim().toUpperCase() as JavaScriptTarget
|
|
317
328
|
}
|
|
318
|
-
if (options.css === false) {
|
|
319
|
-
exclude.push("css")
|
|
320
|
-
initAnswer.css = false
|
|
321
|
-
}
|
|
322
329
|
if (options.esm === false) {
|
|
323
330
|
exclude.push("esm")
|
|
324
331
|
initAnswer.esm = false
|
|
@@ -334,15 +341,16 @@ program
|
|
|
334
341
|
mkdirSync(`./${name}`)
|
|
335
342
|
}
|
|
336
343
|
mkdirSync(`./${name}/src`)
|
|
337
|
-
writeFileSync(`./${name}/src/index.${react ? "tsx" : "ts"}`, "")
|
|
344
|
+
writeFileSync(`./${name}/src/index.${react ? "tsx" : "ts"}`, 'export default "Hello, world!"')
|
|
338
345
|
writeFileSync(`./${name}/build.js`, getBuildJS(answer))
|
|
339
346
|
writeFileSync(`./${name}/package.json`, await getPackageJson(answer))
|
|
340
347
|
writeFileSync(`./${name}/tsconfig.json`, getTSConfig(answer))
|
|
348
|
+
console.log("创建项目成功")
|
|
341
349
|
})
|
|
342
350
|
|
|
343
351
|
program
|
|
344
352
|
.command("build")
|
|
345
|
-
.description("
|
|
353
|
+
.description("更新打包命令")
|
|
346
354
|
.option("--no-css", "不打包 CSS")
|
|
347
355
|
.action(options => {
|
|
348
356
|
const { css } = options
|
|
@@ -357,6 +365,7 @@ program
|
|
|
357
365
|
const config = readFileSync("./tsconfig.json", "utf-8")
|
|
358
366
|
const target = config.match(/"target":[ ]*?"(.+?)"/i)![1].toUpperCase() as JavaScriptTarget
|
|
359
367
|
writeFileSync("./build.js", getBuildJS({ target, css }))
|
|
368
|
+
console.log("更新打包命令成功")
|
|
360
369
|
})
|
|
361
370
|
|
|
362
371
|
program.parse()
|