zixulu 0.0.2 → 0.0.3

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.
Files changed (3) hide show
  1. package/dist/index.js +34 -13
  2. package/package.json +1 -1
  3. package/src/index.ts +34 -12
package/dist/index.js CHANGED
@@ -2,9 +2,10 @@
2
2
  import { Command } from 'commander';
3
3
  import { createPromptModule } from 'inquirer';
4
4
  import { readdirSync, mkdirSync, writeFileSync, statSync, readFileSync } from 'fs';
5
+ import { execSync } from 'child_process';
5
6
 
6
7
  var name = "zixulu";
7
- var version = "0.0.1";
8
+ var version = "0.0.2";
8
9
  var main = "index.js";
9
10
  var license = "MIT";
10
11
  var type = "module";
@@ -102,7 +103,7 @@ execSync("npx tsc --sourceMap -module ${target} -outDir dist/esm && npx tsc --so
102
103
  `;
103
104
  }
104
105
  async function getPackageJson(answer) {
105
- const { name, react } = answer;
106
+ const { name, react, esm, cjs } = answer;
106
107
  const info = {
107
108
  name,
108
109
  version: "0.0.1",
@@ -112,22 +113,25 @@ async function getPackageJson(answer) {
112
113
  license: "MIT",
113
114
  type: "module",
114
115
  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
- }
116
+ ".": {}
125
117
  },
126
118
  scripts: {
127
119
  build: "node ./build.js"
128
120
  },
129
121
  devDependencies: {}
130
122
  };
123
+ if (esm) {
124
+ info.exports["."]["import"] = {
125
+ types: "./dist/index.d.ts",
126
+ default: "./dist/esm/index.js"
127
+ };
128
+ }
129
+ if (cjs) {
130
+ info.exports["."]["require"] = {
131
+ types: "./dist/index.d.ts",
132
+ default: "./dist/cjs/index.js"
133
+ };
134
+ }
131
135
  if (react) {
132
136
  info.devDependencies["@types/react"] = `^${await getPackageLatestVersion("@types/react")}`;
133
137
  info.devDependencies["@types/react-dom"] = `^${await getPackageLatestVersion("@types/react-dom")}`;
@@ -296,6 +300,13 @@ function getProjectAnswer(...exclude) {
296
300
  name: "cjs",
297
301
  message: "是否打包 Common JS:",
298
302
  default: true
303
+ },
304
+ {
305
+ type: "list",
306
+ name: "install",
307
+ message: "现在就安装依赖:",
308
+ choices: ["Yarn", "Pnpm", "Npm", "No"],
309
+ default: "Yarn"
299
310
  }
300
311
  ].filter(it => exclude.every(i => i !== it.name)));
301
312
  }
@@ -342,8 +353,14 @@ program
342
353
  exclude.push("cjs");
343
354
  initAnswer.cjs = false;
344
355
  }
356
+ if (options.esm === false && options.cjs === false) {
357
+ throw new Error("必须选择 ES Module 和 Common JS 至少一种");
358
+ }
345
359
  const answer = { ...initAnswer, ...(await getProjectAnswer(...exclude)) };
346
- const { name, react } = answer;
360
+ const { name, react, install, esm, cjs } = answer;
361
+ if (esm === false && cjs === false) {
362
+ throw new Error("必须选择 ES Module 和 Common JS 至少一种");
363
+ }
347
364
  const dir = readdirSync("./");
348
365
  if (!dir.includes(name)) {
349
366
  mkdirSync(`./${name}`);
@@ -353,6 +370,10 @@ program
353
370
  writeFileSync(`./${name}/build.js`, getBuildJS(answer));
354
371
  writeFileSync(`./${name}/package.json`, await getPackageJson(answer));
355
372
  writeFileSync(`./${name}/tsconfig.json`, getTSConfig(answer));
373
+ writeFileSync(`./${name}/.gitignore`, "node_modules");
374
+ if (install !== "No") {
375
+ execSync(`${install.toLowerCase()} install`, { cwd: `./${name}` });
376
+ }
356
377
  console.log("创建项目成功");
357
378
  });
358
379
  program
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zixulu",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "main": "index.js",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/src/index.ts CHANGED
@@ -4,6 +4,7 @@ import { Command } from "commander"
4
4
  import pkg from "../package.json"
5
5
  import { createPromptModule } from "inquirer"
6
6
  import { mkdirSync, readFileSync, readdirSync, statSync, writeFileSync } from "fs"
7
+ import { execSync } from "child_process"
7
8
 
8
9
  const prompt = createPromptModule()
9
10
 
@@ -18,6 +19,7 @@ interface ProjectAnswer {
18
19
  css: boolean
19
20
  esm: boolean
20
21
  cjs: boolean
22
+ install: "No" | "Yarn" | "Pnpm" | "Npm"
21
23
  }
22
24
 
23
25
  const JavaScriptTargets: JavaScriptTarget[] = ["ES2015", "ES2016", "ES2017", "ES2018", "ES2019", "ES2020", "ES2021", "ES2022", "ES2023", "ESNext"]
@@ -85,7 +87,7 @@ execSync("npx tsc --sourceMap -module ${target} -outDir dist/esm && npx tsc --so
85
87
  }
86
88
 
87
89
  async function getPackageJson(answer: ProjectAnswer) {
88
- const { name, react } = answer
90
+ const { name, react, esm, cjs } = answer
89
91
  const info: any = {
90
92
  name,
91
93
  version: "0.0.1",
@@ -95,22 +97,25 @@ async function getPackageJson(answer: ProjectAnswer) {
95
97
  license: "MIT",
96
98
  type: "module",
97
99
  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
- }
107
- }
100
+ ".": {}
108
101
  },
109
102
  scripts: {
110
103
  build: "node ./build.js"
111
104
  },
112
105
  devDependencies: {}
113
106
  }
107
+ if (esm) {
108
+ info.exports["."]["import"] = {
109
+ types: "./dist/index.d.ts",
110
+ default: "./dist/esm/index.js"
111
+ }
112
+ }
113
+ if (cjs) {
114
+ info.exports["."]["require"] = {
115
+ types: "./dist/index.d.ts",
116
+ default: "./dist/cjs/index.js"
117
+ }
118
+ }
114
119
  if (react) {
115
120
  info.devDependencies["@types/react"] = `^${await getPackageLatestVersion("@types/react")}`
116
121
  info.devDependencies["@types/react-dom"] = `^${await getPackageLatestVersion("@types/react-dom")}`
@@ -283,6 +288,13 @@ function getProjectAnswer<T extends keyof ProjectAnswer>(...exclude: T[]): Promi
283
288
  name: "cjs",
284
289
  message: "是否打包 Common JS:",
285
290
  default: true
291
+ },
292
+ {
293
+ type: "list",
294
+ name: "install",
295
+ message: "现在就安装依赖:",
296
+ choices: ["Yarn", "Pnpm", "Npm", "No"],
297
+ default: "Yarn"
286
298
  }
287
299
  ].filter(it => exclude.every(i => i !== it.name))
288
300
  )
@@ -334,8 +346,14 @@ program
334
346
  exclude.push("cjs")
335
347
  initAnswer.cjs = false
336
348
  }
349
+ if (options.esm === false && options.cjs === false) {
350
+ throw new Error("必须选择 ES Module 和 Common JS 至少一种")
351
+ }
337
352
  const answer = { ...initAnswer, ...(await getProjectAnswer(...exclude)) } as ProjectAnswer
338
- const { name, react } = answer
353
+ const { name, react, install, esm, cjs } = answer
354
+ if (esm === false && cjs === false) {
355
+ throw new Error("必须选择 ES Module 和 Common JS 至少一种")
356
+ }
339
357
  const dir = readdirSync("./")
340
358
  if (!dir.includes(name)) {
341
359
  mkdirSync(`./${name}`)
@@ -345,6 +363,10 @@ program
345
363
  writeFileSync(`./${name}/build.js`, getBuildJS(answer))
346
364
  writeFileSync(`./${name}/package.json`, await getPackageJson(answer))
347
365
  writeFileSync(`./${name}/tsconfig.json`, getTSConfig(answer))
366
+ writeFileSync(`./${name}/.gitignore`, "node_modules")
367
+ if (install !== "No") {
368
+ execSync(`${install.toLowerCase()} install`, { cwd: `./${name}` })
369
+ }
348
370
  console.log("创建项目成功")
349
371
  })
350
372