@benjos/create-boilerplate 1.0.1 β†’ 1.3.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.
Files changed (47) hide show
  1. package/README.md +29 -22
  2. package/dist/index.js +20 -17
  3. package/dist/index.js.map +1 -1
  4. package/package.json +4 -3
  5. package/template-react/.prettierignore +6 -0
  6. package/template-react/.prettierrc +10 -0
  7. package/template-react/assets_source/.gitkeep +0 -0
  8. package/template-react/eslint.config.js +23 -0
  9. package/template-react/index.html +17 -0
  10. package/template-react/package-lock.json +4492 -0
  11. package/template-react/package.json +47 -0
  12. package/template-react/public/assets/fonts/LICENSE +13 -0
  13. package/template-react/public/assets/fonts/template.typeface.json +1 -0
  14. package/template-react/public/assets/hdrs/template.hdr +0 -0
  15. package/template-react/public/assets/icons/benjosLogoBlack.svg +5 -0
  16. package/template-react/public/assets/loaders/draco/README.md +32 -0
  17. package/template-react/public/assets/loaders/draco/draco_decoder.js +34 -0
  18. package/template-react/public/assets/loaders/draco/draco_decoder.wasm +0 -0
  19. package/template-react/public/assets/loaders/draco/draco_encoder.js +33 -0
  20. package/template-react/public/assets/loaders/draco/draco_wasm_wrapper.js +117 -0
  21. package/template-react/public/assets/loaders/draco/gltf/draco_decoder.js +33 -0
  22. package/template-react/public/assets/loaders/draco/gltf/draco_decoder.wasm +0 -0
  23. package/template-react/public/assets/loaders/draco/gltf/draco_encoder.js +33 -0
  24. package/template-react/public/assets/loaders/draco/gltf/draco_wasm_wrapper.js +116 -0
  25. package/template-react/public/assets/models/template.glb +0 -0
  26. package/template-react/public/assets/textures/template.jpg +0 -0
  27. package/template-react/readme.md +31 -0
  28. package/template-react/src/App.css +42 -0
  29. package/template-react/src/App.tsx +14 -0
  30. package/template-react/src/index.css +68 -0
  31. package/template-react/src/main.tsx +10 -0
  32. package/template-react/tsconfig.app.json +28 -0
  33. package/template-react/tsconfig.json +7 -0
  34. package/template-react/tsconfig.node.json +26 -0
  35. package/template-react/vite.config.ts +29 -0
  36. package/template-vanilla/eslint.config.js +11 -0
  37. package/template-vanilla/package-lock.json +3739 -3739
  38. package/template-vanilla/package.json +2 -2
  39. package/template-vanilla/readme.md +28 -10
  40. package/template-vanilla/src/experiences/Experience.ts +7 -0
  41. package/template-vanilla/src/experiences/constants/experiences/ViewType.ts +6 -0
  42. package/template-vanilla/src/experiences/proxies/ViewProxy.ts +15 -0
  43. package/template-vanilla/src/experiences/views/bases/ViewBase.ts +14 -3
  44. package/template-vanilla/src/experiences/views/htmls/bases/HTMLViewBase.ts +2 -1
  45. package/template-vanilla/src/experiences/views/threes/bases/ThreeViewBase.ts +2 -1
  46. package/template-vanilla/src/experiences/views/threes/loaders/LoaderThreeView.ts +1 -0
  47. package/template-vanilla/tsconfig.json +0 -24
package/README.md CHANGED
@@ -1,32 +1,39 @@
1
- # @benjos/boilerplate
1
+ # πŸ“¦ @benjos/create-boilerplate
2
2
 
3
- CLI pour scaffolder des projets Three.js avec support Vanilla/React/Vue.
3
+ CLI to scaffold Three.js projects with framework support.
4
4
 
5
- ## Utilisation
5
+ ## πŸš€ Quick Start
6
6
 
7
7
  ```bash
8
- npm create @benjos/boilerplate
9
- # ou
10
- npx @benjos/boilerplate
8
+ # Interactive mode
9
+ npm create @benjos/boilerplate@latest
10
+
11
+ # With project name
12
+ npm create @benjos/boilerplate@latest my-threejs-app
13
+
14
+ # In current directory
15
+ npm create @benjos/boilerplate@latest .
11
16
  ```
12
17
 
13
- Le CLI vous demandera :
14
- 1. **Nom du projet** (exemple: `my-threejs-app` ou `.` pour le dossier actuel)
15
- 2. **Framework** : Vanilla (React et Vue Γ  venir)
18
+ ## ✨ Features
16
19
 
17
- ## DΓ©veloppement local
20
+ Choose your framework:
21
+ - **Vanilla** β†’ Three.js + TypeScript + HTML views
22
+ - **React** β†’ Three.js + TypeScript + React components
18
23
 
19
- ```bash
20
- cd packages/cli
21
- npm install
22
- npm run build
23
- npm link
24
-
25
- # Tester
26
- cd /tmp
27
- create-boilerplate
28
- ```
24
+ Both templates include:
25
+ - ⚑ Vite for fast development
26
+ - 🎨 GLSL shader support (vite-plugin-glsl)
27
+ - πŸ› Debug mode with lil-gui
28
+ - πŸ“¦ Manager-based architecture (Loader, Ticker, Keyboard, Mouse, etc.)
29
+ - 🎯 ViewProxy system for managing views
30
+ - 🎭 Three.js scene management
31
+ - πŸ“ TypeScript + ESLint + Prettier
32
+
33
+ ## πŸ”§ Development
34
+
35
+ See [MAINTENANCE.md](./MAINTENANCE.md) for contributing.
29
36
 
30
- ## Publication
37
+ ## πŸ“„ License
31
38
 
32
- Voir [docs/PUBLISHING.md](../../docs/PUBLISHING.md)
39
+ MIT
package/dist/index.js CHANGED
@@ -1,20 +1,23 @@
1
1
  #!/usr/bin/env node
2
- import { program } from 'commander';
3
- import inquirer from 'inquirer';
4
2
  import chalk from 'chalk';
3
+ import { program } from 'commander';
5
4
  import fs from 'fs-extra';
5
+ import inquirer from 'inquirer';
6
6
  import path from 'path';
7
7
  import { fileURLToPath } from 'url';
8
+ // eslint-disable-next-line @typescript-eslint/naming-convention
8
9
  const __filename = fileURLToPath(import.meta.url);
10
+ // eslint-disable-next-line @typescript-eslint/naming-convention
9
11
  const __dirname = path.dirname(__filename);
10
- async function createProject() {
12
+ async function createProject(projectNameArg) {
11
13
  console.log(chalk.cyan.bold('\nπŸš€ Welcome to @benjos/boilerplate!\n'));
12
14
  const answers = await inquirer.prompt([
13
15
  {
14
16
  type: 'input',
15
17
  name: 'projectName',
16
18
  message: 'Project name:',
17
- default: 'my-threejs-app',
19
+ default: projectNameArg ?? 'my-threejs-app',
20
+ when: !projectNameArg,
18
21
  validate: (input) => {
19
22
  if (input === '.')
20
23
  return true;
@@ -30,19 +33,18 @@ async function createProject() {
30
33
  message: 'Choose a framework:',
31
34
  choices: [
32
35
  { name: 'Vanilla (Three.js + TypeScript)', value: 'vanilla' },
33
- { name: 'React (Coming soon)', value: 'react', disabled: true },
36
+ { name: 'React (Three.js + TypeScript + React)', value: 'react' },
34
37
  { name: 'Vue (Coming soon)', value: 'vue', disabled: true },
35
38
  ],
36
39
  },
37
40
  ]);
38
41
  // Handle current directory case
39
- const isCurrentDir = answers.projectName === '.';
40
- const targetDir = isCurrentDir
41
- ? process.cwd()
42
- : path.join(process.cwd(), answers.projectName);
42
+ const projectName = projectNameArg ?? answers.projectName ?? '.';
43
+ const isCurrentDir = projectName === '.';
44
+ const targetDir = isCurrentDir ? process.cwd() : path.join(process.cwd(), projectName);
43
45
  // Check if directory already exists (only for new directories)
44
46
  if (!isCurrentDir && (await fs.pathExists(targetDir))) {
45
- console.log(chalk.red(`\n❌ Directory "${answers.projectName}" already exists!`));
47
+ console.log(chalk.red(`\n❌ Directory "${projectName}" already exists!`));
46
48
  process.exit(1);
47
49
  }
48
50
  // Check if current directory is empty (only for current directory)
@@ -53,22 +55,22 @@ async function createProject() {
53
55
  process.exit(1);
54
56
  }
55
57
  }
56
- const projectName = isCurrentDir
57
- ? path.basename(targetDir)
58
- : answers.projectName;
58
+ const finalProjectName = isCurrentDir ? path.basename(targetDir) : projectName;
59
59
  console.log(chalk.blue(`\nπŸ“¦ Creating project in ${targetDir}...\n`));
60
60
  // Copy template
61
61
  const templateDir = path.join(__dirname, '..', `template-${answers.framework}`);
62
62
  await fs.copy(templateDir, targetDir);
63
63
  // Update package.json with project name
64
64
  const packageJsonPath = path.join(targetDir, 'package.json');
65
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
65
66
  const packageJson = await fs.readJson(packageJsonPath);
66
- packageJson.name = projectName;
67
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
68
+ packageJson.name = finalProjectName;
67
69
  await fs.writeJson(packageJsonPath, packageJson, { spaces: 4 });
68
70
  console.log(chalk.green('βœ… Project created successfully!\n'));
69
71
  console.log(chalk.cyan('Next steps:\n'));
70
72
  if (!isCurrentDir) {
71
- console.log(chalk.white(` cd ${answers.projectName}`));
73
+ console.log(chalk.white(` cd ${projectName}`));
72
74
  }
73
75
  console.log(chalk.white(' npm install'));
74
76
  console.log(chalk.white(' npm run dev\n'));
@@ -76,7 +78,8 @@ async function createProject() {
76
78
  program
77
79
  .name('create-boilerplate')
78
80
  .description('Create a new Three.js project with Vanilla/React/Vue')
79
- .version('1.0.0')
80
- .action(createProject);
81
+ .version('1.0.1')
82
+ .argument('[project-name]', 'Project name (use "." for current directory)')
83
+ .action((projectName) => createProject(projectName));
81
84
  program.parse();
82
85
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,14 +1,15 @@
1
1
  {
2
2
  "name": "@benjos/create-boilerplate",
3
- "version": "1.0.1",
4
- "description": "CLI to scaffold Three.js projects with Vanilla/React/Vue support",
3
+ "version": "1.3.2",
4
+ "description": "CLI to scaffold Three.js projects with framework support",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "create-boilerplate": "./dist/index.js"
8
8
  },
9
9
  "files": [
10
10
  "dist",
11
- "template-vanilla"
11
+ "template-vanilla",
12
+ "template-react"
12
13
  ],
13
14
  "scripts": {
14
15
  "build": "tsc",
@@ -0,0 +1,6 @@
1
+ dist
2
+ node_modules
3
+ *.min.js
4
+ *.min.css
5
+ public/assets
6
+ package-lock.json
@@ -0,0 +1,10 @@
1
+ {
2
+ "semi": true,
3
+ "trailingComma": "es5",
4
+ "singleQuote": true,
5
+ "printWidth": 120,
6
+ "tabWidth": 4,
7
+ "useTabs": false,
8
+ "arrowParens": "always",
9
+ "endOfLine": "lf"
10
+ }
File without changes
@@ -0,0 +1,23 @@
1
+ import js from '@eslint/js'
2
+ import globals from 'globals'
3
+ import reactHooks from 'eslint-plugin-react-hooks'
4
+ import reactRefresh from 'eslint-plugin-react-refresh'
5
+ import tseslint from 'typescript-eslint'
6
+ import { defineConfig, globalIgnores } from 'eslint/config'
7
+
8
+ export default defineConfig([
9
+ globalIgnores(['dist']),
10
+ {
11
+ files: ['**/*.{ts,tsx}'],
12
+ extends: [
13
+ js.configs.recommended,
14
+ tseslint.configs.recommended,
15
+ reactHooks.configs.flat.recommended,
16
+ reactRefresh.configs.vite,
17
+ ],
18
+ languageOptions: {
19
+ ecmaVersion: 2020,
20
+ globals: globals.browser,
21
+ },
22
+ },
23
+ ])
@@ -0,0 +1,17 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="icon" type="image/svg+xml" href="./assets/icons/benjosLogoBlack.svg" />
6
+ <meta
7
+ name="viewport"
8
+ content="width=device-width, initial-scale=1.0, maximum-scale=1, minimum-scale=1, height=device-height, user-scalable=no, viewport-fit=cover, shrink-to-fit=no, minimal-ui"
9
+ />
10
+ <title>Boilerplate</title>
11
+ </head>
12
+
13
+ <body>
14
+ <div id="root"></div>
15
+ <script type="module" src="/src/main.tsx"></script>
16
+ </body>
17
+ </html>