create-babylonjs 9.0.0 → 9.2.1

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.
@@ -0,0 +1,7 @@
1
+ import type { ProjectOptions } from "../index";
2
+ interface BundlerConfigResult {
3
+ filename: string;
4
+ content: string;
5
+ }
6
+ export declare function generateBundlerConfig(options: ProjectOptions): BundlerConfigResult | null;
7
+ export {};
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateBundlerConfig = generateBundlerConfig;
4
+ function viteConfig(options) {
5
+ const filename = options.language === "ts" ? "vite.config.ts" : "vite.config.js";
6
+ const content = `import { defineConfig } from "vite";
7
+
8
+ export default defineConfig({
9
+ // https://vitejs.dev/config/
10
+ });
11
+ `;
12
+ return { filename, content };
13
+ }
14
+ function webpackConfig(options) {
15
+ const { language } = options;
16
+ const ext = language === "ts" ? "ts" : "js";
17
+ const filename = "webpack.config.js";
18
+ const tsRule = language === "ts"
19
+ ? `
20
+ {
21
+ test: /\\.tsx?$/,
22
+ use: "ts-loader",
23
+ exclude: /node_modules/,
24
+ },`
25
+ : "";
26
+ const resolve = language === "ts"
27
+ ? `
28
+ resolve: {
29
+ extensions: [".tsx", ".ts", ".js"],
30
+ },`
31
+ : "";
32
+ const content = `const path = require("path");
33
+ const HtmlWebpackPlugin = require("html-webpack-plugin");
34
+
35
+ module.exports = {
36
+ entry: "./src/index.${ext}",
37
+ output: {
38
+ filename: "bundle.js",
39
+ path: path.resolve(__dirname, "dist"),
40
+ clean: true,
41
+ },${resolve}
42
+ module: {
43
+ rules: [${tsRule}
44
+ ],
45
+ },
46
+ plugins: [
47
+ new HtmlWebpackPlugin({
48
+ template: "./index.html",
49
+ }),
50
+ ],
51
+ devServer: {
52
+ static: "./dist",
53
+ hot: true,
54
+ open: true,
55
+ },
56
+ };
57
+ `;
58
+ return { filename, content };
59
+ }
60
+ function rollupConfig(options) {
61
+ const { language } = options;
62
+ const ext = language === "ts" ? "ts" : "js";
63
+ const filename = "rollup.config.mjs";
64
+ const tsImport = language === "ts" ? `import typescript from "@rollup/plugin-typescript";\n` : "";
65
+ const tsPlugin = language === "ts" ? ` typescript(),\n` : "";
66
+ const content = `import resolve from "@rollup/plugin-node-resolve";
67
+ import commonjs from "@rollup/plugin-commonjs";
68
+ ${tsImport}import serve from "rollup-plugin-serve";
69
+ import livereload from "rollup-plugin-livereload";
70
+
71
+ const production = process.env.BUILD === "production";
72
+
73
+ export default {
74
+ input: "src/index.${ext}",
75
+ output: {
76
+ file: "dist/bundle.js",
77
+ format: "iife",
78
+ sourcemap: !production,
79
+ },
80
+ plugins: [
81
+ resolve({ browser: true }),
82
+ commonjs(),
83
+ ${tsPlugin} !production && serve({
84
+ open: true,
85
+ contentBase: ["", "dist"],
86
+ port: 3000,
87
+ }),
88
+ !production && livereload("dist"),
89
+ ],
90
+ };
91
+ `;
92
+ return { filename, content };
93
+ }
94
+ function generateBundlerConfig(options) {
95
+ switch (options.bundler) {
96
+ case "vite":
97
+ return viteConfig(options);
98
+ case "webpack":
99
+ return webpackConfig(options);
100
+ case "rollup":
101
+ return rollupConfig(options);
102
+ case "none":
103
+ return null;
104
+ }
105
+ }
@@ -0,0 +1,2 @@
1
+ import type { ProjectOptions } from "../index";
2
+ export declare function generateIndexHtml(options: ProjectOptions): string;
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateIndexHtml = generateIndexHtml;
4
+ function generateIndexHtml(options) {
5
+ const { bundler, moduleFormat } = options;
6
+ const styles = `
7
+ html, body {
8
+ overflow: hidden;
9
+ width: 100%;
10
+ height: 100%;
11
+ margin: 0;
12
+ padding: 0;
13
+ }
14
+
15
+ #renderCanvas {
16
+ width: 100%;
17
+ height: 100%;
18
+ touch-action: none;
19
+ }`;
20
+ // CDN-only (no bundler, UMD)
21
+ if (bundler === "none") {
22
+ return `<!DOCTYPE html>
23
+ <html lang="en">
24
+ <head>
25
+ <meta charset="UTF-8" />
26
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
27
+ <title>Babylon.js App</title>
28
+ <style>${styles}
29
+ </style>
30
+ <script src="https://cdn.babylonjs.com/babylon.js"><\/script>
31
+ <script src="https://cdn.babylonjs.com/loaders/babylonjs.loaders.min.js"><\/script>
32
+ </head>
33
+ <body>
34
+ <canvas id="renderCanvas"></canvas>
35
+ <script>
36
+ const canvas = document.getElementById("renderCanvas");
37
+ const engine = new BABYLON.Engine(canvas, true);
38
+
39
+ const createScene = async function () {
40
+ const scene = new BABYLON.Scene(engine);
41
+
42
+ // Load a glTF model
43
+ await BABYLON.AppendSceneAsync("https://assets.babylonjs.com/meshes/boombox.glb", scene);
44
+
45
+ // Create a default camera that frames the loaded model
46
+ scene.createDefaultCamera(true, true, true);
47
+ // Rotate the camera to face the front of the model
48
+ scene.activeCamera.alpha += Math.PI;
49
+
50
+ // Create a default environment (skybox + ground + environment lighting)
51
+ scene.createDefaultEnvironment({
52
+ createGround: true,
53
+ createSkybox: true,
54
+ });
55
+
56
+ return scene;
57
+ };
58
+
59
+ createScene().then(function (scene) {
60
+ engine.runRenderLoop(function () {
61
+ scene.render();
62
+ });
63
+ });
64
+
65
+ window.addEventListener("resize", function () {
66
+ engine.resize();
67
+ });
68
+ <\/script>
69
+ </body>
70
+ </html>
71
+ `;
72
+ }
73
+ // Vite serves index.html from root — entry via <script type="module">
74
+ if (bundler === "vite") {
75
+ const ext = moduleFormat === "umd" && options.language === "js" ? "js" : options.language === "ts" ? "ts" : "js";
76
+ return `<!DOCTYPE html>
77
+ <html lang="en">
78
+ <head>
79
+ <meta charset="UTF-8" />
80
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
81
+ <title>Babylon.js App</title>
82
+ <style>${styles}
83
+ </style>
84
+ </head>
85
+ <body>
86
+ <canvas id="renderCanvas"></canvas>
87
+ <script type="module" src="/src/index.${ext}"><\/script>
88
+ </body>
89
+ </html>
90
+ `;
91
+ }
92
+ // Webpack uses HtmlWebpackPlugin — no script tag needed
93
+ if (bundler === "webpack") {
94
+ return `<!DOCTYPE html>
95
+ <html lang="en">
96
+ <head>
97
+ <meta charset="UTF-8" />
98
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
99
+ <title>Babylon.js App</title>
100
+ <style>${styles}
101
+ </style>
102
+ </head>
103
+ <body>
104
+ <canvas id="renderCanvas"></canvas>
105
+ </body>
106
+ </html>
107
+ `;
108
+ }
109
+ // Rollup — bundle injected into dist/, reference it
110
+ if (bundler === "rollup") {
111
+ return `<!DOCTYPE html>
112
+ <html lang="en">
113
+ <head>
114
+ <meta charset="UTF-8" />
115
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
116
+ <title>Babylon.js App</title>
117
+ <style>${styles}
118
+ </style>
119
+ </head>
120
+ <body>
121
+ <canvas id="renderCanvas"></canvas>
122
+ <script src="dist/bundle.js"><\/script>
123
+ </body>
124
+ </html>
125
+ `;
126
+ }
127
+ return "";
128
+ }
@@ -0,0 +1,2 @@
1
+ import type { ProjectOptions } from "../index";
2
+ export declare function generatePackageJson(options: ProjectOptions): string;
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generatePackageJson = generatePackageJson;
4
+ function generatePackageJson(options) {
5
+ const { projectName, moduleFormat, language, bundler } = options;
6
+ const deps = {};
7
+ const devDeps = {};
8
+ const scripts = {};
9
+ // Core Babylon.js dependency + loaders
10
+ if (moduleFormat === "es6") {
11
+ deps["@babylonjs/core"] = "^9.0.0";
12
+ deps["@babylonjs/loaders"] = "^9.0.0";
13
+ }
14
+ else {
15
+ deps["babylonjs"] = "^9.0.0";
16
+ deps["babylonjs-loaders"] = "^9.0.0";
17
+ }
18
+ // TypeScript
19
+ if (language === "ts") {
20
+ devDeps["typescript"] = "^5.4.0";
21
+ }
22
+ // Bundler-specific deps and scripts
23
+ switch (bundler) {
24
+ case "vite":
25
+ devDeps["vite"] = "^6.0.0";
26
+ if (language === "ts") {
27
+ scripts["dev"] = "vite";
28
+ scripts["build"] = "tsc && vite build";
29
+ scripts["preview"] = "vite preview";
30
+ }
31
+ else {
32
+ scripts["dev"] = "vite";
33
+ scripts["build"] = "vite build";
34
+ scripts["preview"] = "vite preview";
35
+ }
36
+ break;
37
+ case "webpack":
38
+ devDeps["webpack"] = "^5.90.0";
39
+ devDeps["webpack-cli"] = "^6.0.0";
40
+ devDeps["webpack-dev-server"] = "^5.0.0";
41
+ devDeps["html-webpack-plugin"] = "^5.6.0";
42
+ if (language === "ts") {
43
+ devDeps["ts-loader"] = "^9.5.0";
44
+ }
45
+ scripts["dev"] = "webpack serve --mode development";
46
+ scripts["build"] = "webpack --mode production";
47
+ break;
48
+ case "rollup":
49
+ devDeps["rollup"] = "^4.10.0";
50
+ devDeps["@rollup/plugin-node-resolve"] = "^16.0.0";
51
+ devDeps["@rollup/plugin-commonjs"] = "^28.0.0";
52
+ devDeps["rollup-plugin-serve"] = "^3.0.0";
53
+ devDeps["rollup-plugin-livereload"] = "^2.0.0";
54
+ if (language === "ts") {
55
+ devDeps["@rollup/plugin-typescript"] = "^12.0.0";
56
+ devDeps["tslib"] = "^2.6.0";
57
+ }
58
+ scripts["dev"] = "rollup -c -w";
59
+ scripts["build"] = "rollup -c --environment BUILD:production";
60
+ break;
61
+ }
62
+ const pkg = {
63
+ name: projectName,
64
+ version: "1.0.0",
65
+ private: true,
66
+ type: bundler === "vite" ? "module" : undefined,
67
+ scripts,
68
+ dependencies: deps,
69
+ devDependencies: devDeps,
70
+ };
71
+ // Remove undefined fields
72
+ Object.keys(pkg).forEach((key) => {
73
+ if (pkg[key] === undefined) {
74
+ delete pkg[key];
75
+ }
76
+ });
77
+ return JSON.stringify(pkg, null, 2) + "\n";
78
+ }
@@ -0,0 +1,2 @@
1
+ import type { ProjectOptions } from "../index";
2
+ export declare function generateSceneCode(options: ProjectOptions): string;
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateSceneCode = generateSceneCode;
4
+ const GLTF_MODEL_URL = "https://assets.babylonjs.com/meshes/boombox.glb";
5
+ // ES6 scene code — tree-shakeable imports
6
+ function es6Scene(language) {
7
+ const canvasCast = language === "ts" ? " as HTMLCanvasElement" : "";
8
+ const arcCamImport = language === "ts" ? '\nimport { ArcRotateCamera } from "@babylonjs/core/Cameras/arcRotateCamera";' : "";
9
+ const alphaCast = language === "ts" ? "(scene.activeCamera as ArcRotateCamera)" : "scene.activeCamera";
10
+ return `import { Engine } from "@babylonjs/core/Engines/engine";
11
+ import { Scene } from "@babylonjs/core/scene";
12
+ import { AppendSceneAsync } from "@babylonjs/core/Loading/sceneLoader";${arcCamImport}
13
+
14
+ // Side-effect imports: these register plugins and augment prototypes at load time
15
+ import "@babylonjs/core/Loading/loadingScreen";
16
+ import "@babylonjs/core/Helpers/sceneHelpers";
17
+ import "@babylonjs/core/Materials/standardMaterial";
18
+ import "@babylonjs/core/Materials/PBR/pbrMaterial";
19
+ import "@babylonjs/core/Materials/Textures/Loaders/envTextureLoader";
20
+ import "@babylonjs/loaders/glTF";
21
+
22
+ const canvas = document.getElementById("renderCanvas")${canvasCast};
23
+ const engine = new Engine(canvas, true);
24
+
25
+ const createScene = async () => {
26
+ const scene = new Scene(engine);
27
+
28
+ // Load a glTF model
29
+ await AppendSceneAsync("${GLTF_MODEL_URL}", scene);
30
+
31
+ // Create a default camera that frames the loaded model
32
+ scene.createDefaultCamera(true, true, true);
33
+ // Rotate the camera to face the front of the model
34
+ ${alphaCast}.alpha += Math.PI;
35
+
36
+ // Create a default environment (skybox + ground + environment lighting)
37
+ scene.createDefaultEnvironment({
38
+ createGround: true,
39
+ createSkybox: true,
40
+ });
41
+
42
+ return scene;
43
+ };
44
+
45
+ createScene().then((scene) => {
46
+ engine.runRenderLoop(() => {
47
+ scene.render();
48
+ });
49
+ });
50
+
51
+ window.addEventListener("resize", () => {
52
+ engine.resize();
53
+ });
54
+ `;
55
+ }
56
+ // UMD scene code — global BABYLON namespace
57
+ function umdScene(language) {
58
+ if (language === "ts") {
59
+ return `import * as BABYLON from "babylonjs";
60
+ import "babylonjs-loaders";
61
+
62
+ const canvas = document.getElementById("renderCanvas") as HTMLCanvasElement;
63
+ const engine = new BABYLON.Engine(canvas, true);
64
+
65
+ const createScene = async (): Promise<BABYLON.Scene> => {
66
+ const scene = new BABYLON.Scene(engine);
67
+
68
+ // Load a glTF model
69
+ await BABYLON.AppendSceneAsync("${GLTF_MODEL_URL}", scene);
70
+
71
+ // Create a default camera that frames the loaded model
72
+ scene.createDefaultCamera(true, true, true);
73
+ // Rotate the camera to face the front of the model
74
+ (scene.activeCamera as BABYLON.ArcRotateCamera).alpha += Math.PI;
75
+
76
+ // Create a default environment (skybox + ground + environment lighting)
77
+ scene.createDefaultEnvironment({
78
+ createGround: true,
79
+ createSkybox: true,
80
+ });
81
+
82
+ return scene;
83
+ };
84
+
85
+ createScene().then((scene) => {
86
+ engine.runRenderLoop(() => {
87
+ scene.render();
88
+ });
89
+ });
90
+
91
+ window.addEventListener("resize", () => {
92
+ engine.resize();
93
+ });
94
+ `;
95
+ }
96
+ // UMD + JS — imports needed because this file is always bundled
97
+ // (CDN-only projects inline the scene code directly in index.html)
98
+ return `import * as BABYLON from "babylonjs";
99
+ import "babylonjs-loaders";
100
+
101
+ const canvas = document.getElementById("renderCanvas");
102
+ const engine = new BABYLON.Engine(canvas, true);
103
+
104
+ const createScene = async () => {
105
+ const scene = new BABYLON.Scene(engine);
106
+
107
+ // Load a glTF model
108
+ await BABYLON.AppendSceneAsync("${GLTF_MODEL_URL}", scene);
109
+
110
+ // Create a default camera that frames the loaded model
111
+ scene.createDefaultCamera(true, true, true);
112
+ // Rotate the camera to face the front of the model
113
+ scene.activeCamera.alpha += Math.PI;
114
+
115
+ // Create a default environment (skybox + ground + environment lighting)
116
+ scene.createDefaultEnvironment({
117
+ createGround: true,
118
+ createSkybox: true,
119
+ });
120
+
121
+ return scene;
122
+ };
123
+
124
+ createScene().then((scene) => {
125
+ engine.runRenderLoop(() => {
126
+ scene.render();
127
+ });
128
+ });
129
+
130
+ window.addEventListener("resize", () => {
131
+ engine.resize();
132
+ });
133
+ `;
134
+ }
135
+ function generateSceneCode(options) {
136
+ const { moduleFormat, language } = options;
137
+ if (moduleFormat === "es6") {
138
+ return es6Scene(language);
139
+ }
140
+ return umdScene(language);
141
+ }
@@ -0,0 +1,2 @@
1
+ import type { ProjectOptions } from "../index";
2
+ export declare function generateTsConfig(options: ProjectOptions): string;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateTsConfig = generateTsConfig;
4
+ function generateTsConfig(options) {
5
+ const { bundler, moduleFormat } = options;
6
+ const base = {
7
+ compilerOptions: {
8
+ target: "ES2020",
9
+ module: bundler === "vite" ? "ESNext" : "ES2020",
10
+ moduleResolution: bundler === "vite" ? "bundler" : "node",
11
+ strict: true,
12
+ esModuleInterop: true,
13
+ skipLibCheck: true,
14
+ forceConsistentCasingInFileNames: true,
15
+ outDir: "./dist",
16
+ sourceMap: true,
17
+ },
18
+ include: ["src"],
19
+ };
20
+ // UMD packages ship their own typings via the `babylonjs` package
21
+ if (moduleFormat === "umd") {
22
+ base.compilerOptions.types = ["babylonjs"];
23
+ }
24
+ return JSON.stringify(base, null, 2) + "\n";
25
+ }
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env node
2
+ export type ModuleFormat = "es6" | "umd";
3
+ export type Language = "ts" | "js";
4
+ export type Bundler = "vite" | "webpack" | "rollup" | "none";
5
+ export interface ProjectOptions {
6
+ projectName: string;
7
+ moduleFormat: ModuleFormat;
8
+ language: Language;
9
+ bundler: Bundler;
10
+ }
package/dist/index.js ADDED
@@ -0,0 +1,126 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const prompts_1 = __importDefault(require("prompts"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const packageJson_1 = require("./generators/packageJson");
11
+ const indexHtml_1 = require("./generators/indexHtml");
12
+ const sceneCode_1 = require("./generators/sceneCode");
13
+ const bundlerConfig_1 = require("./generators/bundlerConfig");
14
+ const tsConfig_1 = require("./generators/tsConfig");
15
+ async function main() {
16
+ console.log("\nšŸ—ļø Create Babylon.js Project\n");
17
+ const response = await (0, prompts_1.default)([
18
+ {
19
+ type: "text",
20
+ name: "projectName",
21
+ message: "Project name:",
22
+ initial: "my-babylonjs-app",
23
+ validate: (value) => (value.trim().length > 0 ? true : "Project name is required"),
24
+ },
25
+ {
26
+ type: "select",
27
+ name: "moduleFormat",
28
+ message: "Module format:",
29
+ choices: [
30
+ { title: "ES6 (@babylonjs/core) — tree-shakeable ES modules", value: "es6" },
31
+ { title: "UMD (babylonjs) — global BABYLON namespace", value: "umd" },
32
+ ],
33
+ },
34
+ {
35
+ type: "select",
36
+ name: "language",
37
+ message: "Language:",
38
+ choices: [
39
+ { title: "TypeScript", value: "ts" },
40
+ { title: "JavaScript", value: "js" },
41
+ ],
42
+ },
43
+ {
44
+ type: "select",
45
+ name: "bundler",
46
+ message: "Bundler:",
47
+ choices: (_, values) => {
48
+ const base = [
49
+ { title: "Vite", value: "vite" },
50
+ { title: "Webpack", value: "webpack" },
51
+ { title: "Rollup", value: "rollup" },
52
+ ];
53
+ if (values.moduleFormat === "umd") {
54
+ base.push({ title: "None (CDN script tags only)", value: "none" });
55
+ }
56
+ return base;
57
+ },
58
+ },
59
+ ], {
60
+ onCancel: () => {
61
+ console.log("\nProject creation cancelled.");
62
+ process.exit(0);
63
+ },
64
+ });
65
+ const options = {
66
+ projectName: response.projectName.trim(),
67
+ moduleFormat: response.moduleFormat,
68
+ language: response.language,
69
+ bundler: response.bundler,
70
+ };
71
+ const targetDir = path_1.default.resolve(process.cwd(), options.projectName);
72
+ if (fs_1.default.existsSync(targetDir)) {
73
+ const { overwrite } = await (0, prompts_1.default)({
74
+ type: "confirm",
75
+ name: "overwrite",
76
+ message: `Directory "${options.projectName}" already exists. Overwrite?`,
77
+ initial: false,
78
+ });
79
+ if (!overwrite) {
80
+ console.log("Cancelled.");
81
+ process.exit(0);
82
+ }
83
+ fs_1.default.rmSync(targetDir, { recursive: true, force: true });
84
+ }
85
+ scaffoldProject(targetDir, options);
86
+ console.log(`\nāœ… Project created in ./${options.projectName}\n`);
87
+ console.log("Next steps:\n");
88
+ console.log(` cd ${options.projectName}`);
89
+ if (options.bundler !== "none") {
90
+ console.log(" npm install");
91
+ console.log(" npm run dev\n");
92
+ }
93
+ else {
94
+ console.log(" Open index.html in your browser\n");
95
+ }
96
+ }
97
+ function scaffoldProject(targetDir, options) {
98
+ fs_1.default.mkdirSync(targetDir, { recursive: true });
99
+ if (options.bundler === "none") {
100
+ // CDN-only: just an HTML file
101
+ writeFile(targetDir, "index.html", (0, indexHtml_1.generateIndexHtml)(options));
102
+ return;
103
+ }
104
+ // All bundler-based projects get these
105
+ writeFile(targetDir, "package.json", (0, packageJson_1.generatePackageJson)(options));
106
+ writeFile(targetDir, "index.html", (0, indexHtml_1.generateIndexHtml)(options));
107
+ const ext = options.language === "ts" ? "ts" : "js";
108
+ fs_1.default.mkdirSync(path_1.default.join(targetDir, "src"), { recursive: true });
109
+ writeFile(targetDir, `src/index.${ext}`, (0, sceneCode_1.generateSceneCode)(options));
110
+ if (options.language === "ts") {
111
+ writeFile(targetDir, "tsconfig.json", (0, tsConfig_1.generateTsConfig)(options));
112
+ }
113
+ const bundlerConfig = (0, bundlerConfig_1.generateBundlerConfig)(options);
114
+ if (bundlerConfig) {
115
+ writeFile(targetDir, bundlerConfig.filename, bundlerConfig.content);
116
+ }
117
+ }
118
+ function writeFile(dir, filePath, content) {
119
+ const fullPath = path_1.default.join(dir, filePath);
120
+ fs_1.default.mkdirSync(path_1.default.dirname(fullPath), { recursive: true });
121
+ fs_1.default.writeFileSync(fullPath, content, "utf-8");
122
+ }
123
+ main().catch((err) => {
124
+ console.error("Error:", err);
125
+ process.exit(1);
126
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-babylonjs",
3
- "version": "9.0.0",
3
+ "version": "9.2.1",
4
4
  "description": "Scaffold a new Babylon.js project with your choice of module format, language, and bundler.",
5
5
  "bin": {
6
6
  "create-babylonjs": "./dist/index.js"