create-medan-app 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/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { existsSync, mkdirSync, readdirSync, writeFileSync } from "node:fs";
3
3
  import { resolve } from "node:path";
4
- import { GITIGNORE, mainMedan, packageJson, readme } from "./templates.js";
4
+ import { DEV_MJS, GITIGNORE, mainMedan, packageJson, readme } from "./templates.js";
5
5
  function isValidPackageName(name) {
6
6
  return /^(?:@[a-z0-9-*~][a-z0-9-*._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/.test(name);
7
7
  }
@@ -23,13 +23,15 @@ function main() {
23
23
  mkdirSync(targetDir, { recursive: true });
24
24
  writeFileSync(resolve(targetDir, "package.json"), packageJson(rawName));
25
25
  writeFileSync(resolve(targetDir, "main.medan"), mainMedan(rawName));
26
+ writeFileSync(resolve(targetDir, "dev.mjs"), DEV_MJS);
26
27
  writeFileSync(resolve(targetDir, "README.md"), readme(rawName));
27
28
  writeFileSync(resolve(targetDir, ".gitignore"), GITIGNORE);
28
29
  console.log(`mantap kali! project '${rawName}' udah jadi.\n`);
29
30
  console.log("langkah selanjutnya:\n");
30
31
  console.log(` cd ${rawName}`);
31
32
  console.log(" npm install");
32
- console.log(" npm start");
33
+ console.log(" npm run dev # auto-regenerate tiap main.medan disave");
34
+ console.log(" # atau: npm start # generate sekali doang");
33
35
  console.log(" # terus buka landing.html di browser");
34
36
  }
35
37
  main();
package/dist/templates.js CHANGED
@@ -4,14 +4,39 @@ export function packageJson(name) {
4
4
  "version": "0.1.0",
5
5
  "private": true,
6
6
  "scripts": {
7
- "start": "medan main.medan"
7
+ "start": "medan main.medan",
8
+ "dev": "node dev.mjs"
8
9
  },
9
10
  "dependencies": {
10
- "medan-language": "^0.1.2"
11
+ "medan-language": "^0.1.3"
11
12
  }
12
13
  }
13
14
  `;
14
15
  }
16
+ export const DEV_MJS = `// dev.mjs
17
+ // "npm run dev" jalanin file ini: generate landing.html sekali, terus
18
+ // nungguin main.medan berubah dan regenerate otomatis tiap disave.
19
+
20
+ import { spawnSync } from "node:child_process";
21
+ import { watch } from "node:fs";
22
+
23
+ function build() {
24
+ console.log("\\n[medan] generate landing.html ...");
25
+ const result = spawnSync("medan", ["main.medan"], { stdio: "inherit" });
26
+ if (result.status !== 0) {
27
+ console.error("[medan] ada error di atas, benerin dulu terus save lagi.");
28
+ }
29
+ }
30
+
31
+ build();
32
+ console.log("[medan] mantau main.medan, ctrl+c buat berhenti...");
33
+
34
+ let timer;
35
+ watch("main.medan", () => {
36
+ clearTimeout(timer);
37
+ timer = setTimeout(build, 100);
38
+ });
39
+ `;
15
40
  export function mainMedan(name) {
16
41
  return `// main.medan
17
42
  // Ini titik masuk project "${name}" kamu.
@@ -152,12 +177,14 @@ Project Medan-lang, di-scaffold pakai \`create-medan-app\`.
152
177
 
153
178
  \`\`\`bash
154
179
  npm install
155
- npm start
180
+ npm run dev
156
181
  \`\`\`
157
182
 
158
- \`npm start\` jalanin \`main.medan\`, yang bakal nge-generate \`landing.html\`.
159
- Buka file itu di browser buat liat hasilnya. Edit \`main.medan\`, jalanin
160
- \`npm start\` lagi, refresh browser-nya.
183
+ \`npm run dev\` generate \`landing.html\` terus mantau \`main.medan\` tiap kamu
184
+ save, otomatis di-generate ulang. Buka \`landing.html\` di browser, refresh
185
+ manual tiap abis edit & save.
186
+
187
+ Mau generate sekali doang tanpa watch mode, pakai \`npm start\`.
161
188
 
162
189
  ## Belajar lebih lanjut
163
190
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-medan-app",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Scaffold project Medan-lang baru, kayak 'npx create-next-app'.",
5
5
  "author": "Wilbert Law",
6
6
  "license": "MIT",