create-nodality 1.0.0-beta.3 → 1.0.0-beta.5

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 +80 -50
  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,11 +18,77 @@ function createProject(projectName) {
23
18
  }
24
19
 
25
20
  mkdirSync(projectPath);
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());
54
+
55
+ // Create webpack.config.js
56
+ const webpackConfig = `
57
+ import path from 'path';
58
+ import { fileURLToPath } from 'url';
26
59
 
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"));
60
+ const __filename = fileURLToPath(import.meta.url);
61
+ const __dirname = path.dirname(__filename);
62
+
63
+ export default {
64
+ mode: 'production',
65
+ entry: './src/index.js',
66
+ output: {
67
+ filename: 'bundle.js',
68
+ path: path.resolve(__dirname, 'dist'),
69
+ },
70
+ module: {
71
+ rules: [
72
+ {
73
+ test: /\\.js$/,
74
+ exclude: /node_modules/,
75
+ use: {
76
+ loader: 'babel-loader',
77
+ options: {
78
+ presets: ['@babel/preset-env'],
79
+ },
80
+ },
81
+ },
82
+ ],
83
+ },
84
+ resolve: {
85
+ alias: {
86
+ nodality: path.resolve(__dirname, 'node_modules/nodality/dist/index.esm.js'),
87
+ },
88
+ },
89
+ };
90
+ `;
91
+ writeFileSync(resolve(projectPath, "webpack.config.js"), webpackConfig.trim());
31
92
 
32
93
  // Create package.json
33
94
  const pkg = {
@@ -36,67 +97,36 @@ function createProject(projectName) {
36
97
  type: "module",
37
98
  scripts: {
38
99
  build: "webpack",
39
- start: "serve dist"
100
+ start: "serve . -l 4000",
40
101
  },
41
102
  dependencies: {
42
- nodality: "^1.0.0-beta.4"
103
+ nodality: "^1.0.0-beta.4",
43
104
  },
44
105
  devDependencies: {
45
106
  webpack: "^5.0.0",
46
107
  "webpack-cli": "^5.0.0",
47
108
  "babel-loader": "^9.0.0",
48
109
  "@babel/core": "^7.0.0",
49
- "@babel/preset-env": "^7.0.0"
50
- }
110
+ "@babel/preset-env": "^7.0.0",
111
+ },
51
112
  };
52
-
53
113
  writeFileSync(resolve(projectPath, "package.json"), JSON.stringify(pkg, null, 2));
54
- console.log("Created package.json");
55
114
 
56
115
  // Install dependencies
57
116
  console.log("Installing dependencies...");
58
117
  execSync(`npm install`, { cwd: projectPath, stdio: "inherit" });
59
118
 
60
- // Create webpack.config.js
61
- const webpackConfig = `
62
- const path = require('path');
63
-
64
- module.exports = {
65
- mode: 'development',
66
- entry: './main.js',
67
- output: {
68
- filename: 'bundle.js',
69
- path: path.resolve(process.cwd(), 'dist'),
70
- },
71
- module: {
72
- rules: [
73
- {
74
- test: /\\.m?js$/,
75
- exclude: /node_modules/,
76
- use: {
77
- loader: 'babel-loader',
78
- options: {
79
- presets: ['@babel/preset-env']
80
- }
81
- }
82
- }
83
- ]
84
- }
85
- };
86
- `;
87
- writeFileSync(resolve(projectPath, "webpack.config.js"), webpackConfig.trim());
88
- console.log("Created webpack.config.js");
89
-
90
- // Build project using webpack
91
- console.log("Building with webpack...");
119
+ // Build project
120
+ console.log("Building with Webpack...");
92
121
  execSync(`npx webpack`, { cwd: projectPath, stdio: "inherit" });
93
122
 
94
123
  console.log("\nAll done! Run:\n");
95
124
  console.log(` cd ${projectName}`);
96
125
  console.log(" npm run build # Rebuild your project");
97
- console.log(" npm start # Serve your project\n");
126
+ console.log(" npm start # Serve your project on localhost:4000\n");
98
127
  }
99
128
 
129
+ // Parse CLI arguments
100
130
  const args = process.argv.slice(2);
101
131
 
102
132
  if (!args[0]) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-nodality",
3
- "version": "1.0.0-beta.3",
3
+ "version": "1.0.0-beta.5",
4
4
  "description": "Project scaffolding tool for Nodality library",
5
5
  "bin": {
6
6
  "create-nodality": "./bin/index.js"