create-rspack 0.1.1 → 0.1.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/CHANGELOG.md +9 -0
- package/index.js +40 -11
- package/package.json +1 -1
- package/utils/index.js +6 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# create-rspack
|
|
2
2
|
|
|
3
|
+
## 0.1.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 6d482a7: fix yargs default command ad help
|
|
8
|
+
- 8f8e025: align optimizeChunkModules
|
|
9
|
+
- 0f0969a: feat: add the handling of duplicate project names
|
|
10
|
+
- 8c196ee: feat: support package manager detect
|
|
11
|
+
|
|
3
12
|
## 0.1.1
|
|
4
13
|
|
|
5
14
|
### Patch Changes
|
package/index.js
CHANGED
|
@@ -4,31 +4,52 @@ const { hideBin } = require("yargs/helpers");
|
|
|
4
4
|
const fs = require("fs");
|
|
5
5
|
const path = require("path");
|
|
6
6
|
const prompts = require("prompts");
|
|
7
|
+
const { formatTargetDir } = require("./utils");
|
|
7
8
|
yargs(hideBin(process.argv))
|
|
8
9
|
.command("$0", "init rspack project", async argv => {
|
|
10
|
+
const { help } = argv.argv;
|
|
11
|
+
if (help) return;
|
|
9
12
|
const defaultProjectName = "rspack-project";
|
|
10
|
-
let
|
|
13
|
+
let targetDir = defaultProjectName;
|
|
14
|
+
await prompts([
|
|
11
15
|
{
|
|
12
16
|
type: "text",
|
|
13
17
|
name: "projectDir",
|
|
14
18
|
initial: defaultProjectName,
|
|
15
|
-
message: "Project folder"
|
|
19
|
+
message: "Project folder",
|
|
20
|
+
onState: state => {
|
|
21
|
+
targetDir = formatTargetDir(state.value) || defaultProjectName;
|
|
22
|
+
}
|
|
16
23
|
}
|
|
17
24
|
]);
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
25
|
+
let root = path.resolve(process.cwd(), targetDir);
|
|
26
|
+
while (fs.existsSync(root)) {
|
|
27
|
+
console.log(
|
|
28
|
+
`${targetDir} is not empty, please choose another project name`
|
|
29
|
+
);
|
|
30
|
+
await prompts([
|
|
31
|
+
{
|
|
32
|
+
type: "text",
|
|
33
|
+
name: "projectDir",
|
|
34
|
+
initial: defaultProjectName,
|
|
35
|
+
message: "Project folder",
|
|
36
|
+
onState: state => {
|
|
37
|
+
targetDir = formatTargetDir(state.value) || defaultProjectName;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
]);
|
|
41
|
+
root = path.resolve(process.cwd(), targetDir);
|
|
22
42
|
}
|
|
23
|
-
fs.mkdirSync(root);
|
|
43
|
+
fs.mkdirSync(root, { recursive: true });
|
|
24
44
|
// TODO support more template in the future
|
|
25
45
|
const templateDir = "template-react";
|
|
26
46
|
const srcFolder = path.resolve(__dirname, templateDir);
|
|
27
|
-
copyFolder(srcFolder,
|
|
47
|
+
copyFolder(srcFolder, targetDir);
|
|
48
|
+
const pkgManager = getPkgManager();
|
|
28
49
|
console.log("\nDone. Now run:\n");
|
|
29
|
-
console.log(`cd ${
|
|
30
|
-
console.log(
|
|
31
|
-
console.log(
|
|
50
|
+
console.log(`cd ${targetDir}\n`);
|
|
51
|
+
console.log(`${pkgManager} install\n`);
|
|
52
|
+
console.log(`${pkgManager} run dev\n`);
|
|
32
53
|
})
|
|
33
54
|
.help()
|
|
34
55
|
.parse();
|
|
@@ -45,3 +66,11 @@ function copyFolder(src, dst) {
|
|
|
45
66
|
}
|
|
46
67
|
}
|
|
47
68
|
}
|
|
69
|
+
|
|
70
|
+
function getPkgManager() {
|
|
71
|
+
const ua = process.env.npm_config_user_agent;
|
|
72
|
+
if (!ua) return "npm";
|
|
73
|
+
const [pkgInfo] = ua.split(" ");
|
|
74
|
+
const [name] = pkgInfo.split("/");
|
|
75
|
+
return name || "npm";
|
|
76
|
+
}
|
package/package.json
CHANGED