create-nodality 1.0.0-beta.4 → 1.0.0-beta.6

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 (2) hide show
  1. package/bin/index.js +75 -48
  2. package/package.json +1 -1
package/bin/index.js CHANGED
@@ -1,19 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { mkdirSync, copyFileSync, existsSync, writeFileSync } from "fs";
3
+ import { mkdirSync, writeFileSync, existsSync } from "fs";
4
4
  import { resolve, dirname } from "path";
5
5
  import { execSync } from "child_process";
6
6
  import { fileURLToPath } from "url";
7
7
 
8
- // Helper to get directory of current file (since using ES modules)
8
+ // Helper to get directory of current file (ESM compatible)
9
9
  const __filename = fileURLToPath(import.meta.url);
10
10
  const __dirname = dirname(__filename);
11
11
 
12
- function copyTemplateFile(src, dest) {
13
- copyFileSync(src, dest);
14
- console.log(`Created ${dest}`);
15
- }
16
-
17
12
  function createProject(projectName) {
18
13
  const projectPath = resolve(process.cwd(), projectName);
19
14
 
@@ -23,39 +18,39 @@ function createProject(projectName) {
23
18
  }
24
19
 
25
20
  mkdirSync(projectPath);
26
-
27
- // Copy template files
28
- const templatePath = resolve(__dirname, "../templates");
29
- copyTemplateFile(resolve(templatePath, "index.html"), resolve(projectPath, "index.html"));
30
- copyTemplateFile(resolve(templatePath, "main.js"), resolve(projectPath, "main.js"));
31
-
32
- // Create package.json
33
- const pkg = {
34
- name: projectName,
35
- version: "1.0.0",
36
- type: "module",
37
- scripts: {
38
- build: "webpack",
39
- start: "serve dist"
40
- },
41
- dependencies: {
42
- nodality: "^1.0.0-beta.4"
43
- },
44
- devDependencies: {
45
- webpack: "^5.0.0",
46
- "webpack-cli": "^5.0.0",
47
- "babel-loader": "^9.0.0",
48
- "@babel/core": "^7.0.0",
49
- "@babel/preset-env": "^7.0.0"
50
- }
51
- };
52
-
53
- writeFileSync(resolve(projectPath, "package.json"), JSON.stringify(pkg, null, 2));
54
- console.log("Created package.json");
55
-
56
- // Install dependencies
57
- console.log("Installing dependencies...");
58
- execSync(`npm install`, { cwd: projectPath, stdio: "inherit" });
21
+ const srcPath = resolve(projectPath, "src");
22
+ mkdirSync(srcPath);
23
+
24
+ // Create index.html
25
+ const indexHtml = `
26
+ <!DOCTYPE html>
27
+ <html lang="en">
28
+ <head>
29
+ <meta charset="UTF-8">
30
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
31
+ <title>${projectName}</title>
32
+ </head>
33
+ <body>
34
+ <div id="mount"></div>
35
+ <script src="dist/bundle.js"></script>
36
+ </body>
37
+ </html>
38
+ `;
39
+ writeFileSync(resolve(projectPath, "index.html"), indexHtml.trim());
40
+
41
+ // Create index.js
42
+ const indexJs = `
43
+ import { Text } from 'nodality';
44
+
45
+ new Text('Hello, Nodality!')
46
+ .set({
47
+ size: 'S1',
48
+ color: '#1abc9c',
49
+ font: 'Arial',
50
+ })
51
+ .render('#mount');
52
+ `;
53
+ writeFileSync(resolve(srcPath, "index.js"), indexJs.trim());
59
54
 
60
55
  // Create webpack.config.js
61
56
  const webpackConfig = `
@@ -66,16 +61,16 @@ const __filename = fileURLToPath(import.meta.url);
66
61
  const __dirname = path.dirname(__filename);
67
62
 
68
63
  export default {
69
- mode: 'development',
70
- entry: './main.js',
64
+ mode: 'production',
65
+ entry: './src/index.js',
71
66
  output: {
72
67
  filename: 'bundle.js',
73
- path: path.resolve(process.cwd(), 'dist'),
68
+ path: path.resolve(__dirname, 'dist'),
74
69
  },
75
70
  module: {
76
71
  rules: [
77
72
  {
78
- test: /\.m?js$/,
73
+ test: /\\.js$/,
79
74
  exclude: /node_modules/,
80
75
  use: {
81
76
  loader: 'babel-loader',
@@ -86,21 +81,52 @@ export default {
86
81
  },
87
82
  ],
88
83
  },
84
+ resolve: {
85
+ alias: {
86
+ nodality: path.resolve(__dirname, 'node_modules/nodality/dist/index.esm.js'),
87
+ },
88
+ },
89
89
  };
90
90
  `;
91
91
  writeFileSync(resolve(projectPath, "webpack.config.js"), webpackConfig.trim());
92
- console.log("Created webpack.config.js");
93
92
 
94
- // Build project using webpack
95
- console.log("Building with webpack...");
93
+ // Create package.json
94
+ const pkg = {
95
+ name: projectName,
96
+ version: "1.0.0",
97
+ type: "module",
98
+ scripts: {
99
+ build: "webpack",
100
+ start: "npx serve . -l 4000",
101
+ },
102
+ dependencies: {
103
+ nodality: "^1.0.0-beta.4",
104
+ },
105
+ devDependencies: {
106
+ webpack: "^5.0.0",
107
+ "webpack-cli": "^5.0.0",
108
+ "babel-loader": "^9.0.0",
109
+ "@babel/core": "^7.0.0",
110
+ "@babel/preset-env": "^7.0.0",
111
+ },
112
+ };
113
+ writeFileSync(resolve(projectPath, "package.json"), JSON.stringify(pkg, null, 2));
114
+
115
+ // Install dependencies
116
+ console.log("Installing dependencies...");
117
+ execSync(`npm install`, { cwd: projectPath, stdio: "inherit" });
118
+
119
+ // Build project
120
+ console.log("Building with Webpack...");
96
121
  execSync(`npx webpack`, { cwd: projectPath, stdio: "inherit" });
97
122
 
98
123
  console.log("\nAll done! Run:\n");
99
124
  console.log(` cd ${projectName}`);
100
125
  console.log(" npm run build # Rebuild your project");
101
- console.log(" npm start # Serve your project\n");
126
+ console.log(" npm start # Serve your project on localhost:4000\n");
102
127
  }
103
128
 
129
+ // Parse CLI arguments
104
130
  const args = process.argv.slice(2);
105
131
 
106
132
  if (!args[0]) {
@@ -108,4 +134,5 @@ if (!args[0]) {
108
134
  process.exit(1);
109
135
  }
110
136
 
137
+ // Create the project
111
138
  createProject(args[0]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-nodality",
3
- "version": "1.0.0-beta.4",
3
+ "version": "1.0.0-beta.6",
4
4
  "description": "Project scaffolding tool for Nodality library",
5
5
  "bin": {
6
6
  "create-nodality": "./bin/index.js"