@benjos/create-boilerplate 1.0.0 → 1.0.3
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/README.md +16 -21
- package/dist/index.js +16 -15
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/template-vanilla/.prettierignore +6 -0
- package/template-vanilla/.prettierrc +10 -0
- package/template-vanilla/assets_source/.gitkeep +0 -0
- package/template-vanilla/docs/PUBLISHING.md +30 -0
- package/template-vanilla/eslint.config.js +126 -0
- package/template-vanilla/index.html +17 -0
- package/template-vanilla/package-lock.json +3743 -0
- package/template-vanilla/package.json +38 -0
- package/template-vanilla/public/assets/fonts/LICENSE +13 -0
- package/template-vanilla/public/assets/fonts/template.typeface.json +1 -0
- package/template-vanilla/public/assets/hdrs/template.hdr +0 -0
- package/template-vanilla/public/assets/icons/benjosLogoBlack.svg +5 -0
- package/template-vanilla/public/assets/loaders/draco/README.md +32 -0
- package/template-vanilla/public/assets/loaders/draco/draco_decoder.js +34 -0
- package/template-vanilla/public/assets/loaders/draco/draco_decoder.wasm +0 -0
- package/template-vanilla/public/assets/loaders/draco/draco_encoder.js +33 -0
- package/template-vanilla/public/assets/loaders/draco/draco_wasm_wrapper.js +117 -0
- package/template-vanilla/public/assets/loaders/draco/gltf/draco_decoder.js +33 -0
- package/template-vanilla/public/assets/loaders/draco/gltf/draco_decoder.wasm +0 -0
- package/template-vanilla/public/assets/loaders/draco/gltf/draco_encoder.js +33 -0
- package/template-vanilla/public/assets/loaders/draco/gltf/draco_wasm_wrapper.js +116 -0
- package/template-vanilla/public/assets/models/template.glb +0 -0
- package/template-vanilla/public/assets/textures/template.jpg +0 -0
- package/template-vanilla/readme.md +49 -0
- package/template-vanilla/src/experiences/Experience.ts +15 -0
- package/template-vanilla/src/experiences/cameras/threes/DebugThreeCameraController.ts +60 -0
- package/template-vanilla/src/experiences/cameras/threes/LoaderThreeCameraController.ts +28 -0
- package/template-vanilla/src/experiences/cameras/threes/MainThreeCameraController.ts +28 -0
- package/template-vanilla/src/experiences/cameras/threes/bases/ThreeCameraControllerBase.ts +109 -0
- package/template-vanilla/src/experiences/commands/InitCommand.ts +48 -0
- package/template-vanilla/src/experiences/constants/doms/DomEvent.ts +100 -0
- package/template-vanilla/src/experiences/constants/doms/KeyboardConstant.ts +250 -0
- package/template-vanilla/src/experiences/constants/experiences/AnimationId.ts +3 -0
- package/template-vanilla/src/experiences/constants/experiences/AssetId.ts +8 -0
- package/template-vanilla/src/experiences/constants/experiences/AssetType.ts +8 -0
- package/template-vanilla/src/experiences/constants/experiences/CameraId.ts +7 -0
- package/template-vanilla/src/experiences/constants/experiences/CameraType.ts +6 -0
- package/template-vanilla/src/experiences/constants/experiences/Object3dId.ts +3 -0
- package/template-vanilla/src/experiences/constants/experiences/ViewId.ts +15 -0
- package/template-vanilla/src/experiences/engines/htmls/MainHTML.ts +13 -0
- package/template-vanilla/src/experiences/engines/threes/MainThree.ts +171 -0
- package/template-vanilla/src/experiences/managers/DebugManager.ts +78 -0
- package/template-vanilla/src/experiences/managers/KeyboardManager.ts +65 -0
- package/template-vanilla/src/experiences/managers/LoaderManager.ts +79 -0
- package/template-vanilla/src/experiences/managers/MouseManager.ts +100 -0
- package/template-vanilla/src/experiences/managers/ResizeManager.ts +53 -0
- package/template-vanilla/src/experiences/managers/TickerManager.ts +86 -0
- package/template-vanilla/src/experiences/managers/threes/ThreeAssetsManager.ts +279 -0
- package/template-vanilla/src/experiences/managers/threes/ThreeCameraControllerManager.ts +43 -0
- package/template-vanilla/src/experiences/managers/threes/ThreeRaycasterManager.ts +23 -0
- package/template-vanilla/src/experiences/materials/threes/loaders/LoaderMaterial.ts +48 -0
- package/template-vanilla/src/experiences/proxies/ViewProxy.ts +30 -0
- package/template-vanilla/src/experiences/proxies/bases/PoolProxyBase.ts +61 -0
- package/template-vanilla/src/experiences/renderers/threes/LoaderRenderer.ts +22 -0
- package/template-vanilla/src/experiences/renderers/threes/Renderer.ts +74 -0
- package/template-vanilla/src/experiences/renderers/threes/bases/WebGLRendererBase.ts +29 -0
- package/template-vanilla/src/experiences/shaders/threes/loaders/LoaderFragmentShader.glsl +6 -0
- package/template-vanilla/src/experiences/shaders/threes/loaders/LoaderVertexShader.glsl +3 -0
- package/template-vanilla/src/experiences/styles/abstracts/_import.scss +5 -0
- package/template-vanilla/src/experiences/styles/abstracts/functions.scss +3 -0
- package/template-vanilla/src/experiences/styles/abstracts/mixins.scss +0 -0
- package/template-vanilla/src/experiences/styles/abstracts/variables.scss +7 -0
- package/template-vanilla/src/experiences/styles/commons/fonts.scss +10 -0
- package/template-vanilla/src/experiences/styles/commons/main.scss +84 -0
- package/template-vanilla/src/experiences/styles/commons/texts.scss +1 -0
- package/template-vanilla/src/experiences/styles/style.scss +7 -0
- package/template-vanilla/src/experiences/styles/views/loader.scss +72 -0
- package/template-vanilla/src/experiences/tools/Action.ts +23 -0
- package/template-vanilla/src/experiences/tools/Point.ts +56 -0
- package/template-vanilla/src/experiences/types/global.d.ts +9 -0
- package/template-vanilla/src/experiences/utils/AssetUtils.ts +6 -0
- package/template-vanilla/src/experiences/utils/DomUtils.ts +28 -0
- package/template-vanilla/src/experiences/views/bases/ViewBase.ts +25 -0
- package/template-vanilla/src/experiences/views/htmls/bases/HTMLViewBase.ts +41 -0
- package/template-vanilla/src/experiences/views/htmls/loaders/LoaderHTMLView.ts +34 -0
- package/template-vanilla/src/experiences/views/htmls/loaders/components/HTMLTemplateLoader.ts +57 -0
- package/template-vanilla/src/experiences/views/threes/bases/ThreeViewBase.ts +26 -0
- package/template-vanilla/src/experiences/views/threes/loaders/LoaderThreeView.ts +41 -0
- package/template-vanilla/src/experiences/views/threes/loaders/components/ThreeTemplateLoader.ts +52 -0
- package/template-vanilla/src/experiences/views/threes/worlds/WorldThreeView.ts +51 -0
- package/template-vanilla/src/experiences/views/threes/worlds/components/Environment.ts +77 -0
- package/template-vanilla/src/experiences/views/threes/worlds/components/actors/TemplateFont.ts +62 -0
- package/template-vanilla/src/experiences/views/threes/worlds/components/actors/TemplateMesh.ts +65 -0
- package/template-vanilla/src/experiences/views/threes/worlds/components/actors/TemplateModel.ts +31 -0
- package/template-vanilla/src/experiences/views/threes/worlds/components/actors/bases/ActorBase.ts +9 -0
- package/template-vanilla/src/experiences/views/threes/worlds/components/actors/bases/AnimatedModelBase.ts +67 -0
- package/template-vanilla/src/experiences/views/threes/worlds/components/actors/bases/ModelBase.ts +48 -0
- package/template-vanilla/src/main.ts +3 -0
- package/template-vanilla/tsconfig.json +24 -0
- package/template-vanilla/vite.config.ts +15 -0
package/README.md
CHANGED
|
@@ -1,32 +1,27 @@
|
|
|
1
|
-
# @benjos/boilerplate
|
|
1
|
+
# 📦 @benjos/create-boilerplate
|
|
2
2
|
|
|
3
|
-
CLI
|
|
3
|
+
CLI to scaffold Three.js projects.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 🚀 Usage
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
npm create @benjos/boilerplate
|
|
9
|
-
# ou
|
|
10
|
-
npx @benjos/boilerplate
|
|
8
|
+
npm create @benjos/boilerplate@latest [project-name]
|
|
11
9
|
```
|
|
12
10
|
|
|
13
|
-
|
|
14
|
-
1. **Nom du projet** (exemple: `my-threejs-app` ou `.` pour le dossier actuel)
|
|
15
|
-
2. **Framework** : Vanilla (React et Vue à venir)
|
|
16
|
-
|
|
17
|
-
## Développement local
|
|
11
|
+
## 🔧 Local Development
|
|
18
12
|
|
|
19
13
|
```bash
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
npm run build
|
|
23
|
-
npm link
|
|
24
|
-
|
|
25
|
-
# Tester
|
|
26
|
-
cd /tmp
|
|
27
|
-
create-boilerplate
|
|
14
|
+
git clone https://github.com/LeBenjos/boilerplate.git
|
|
15
|
+
cd boilerplate/packages/cli
|
|
16
|
+
npm install && npm run build && npm link
|
|
28
17
|
```
|
|
29
18
|
|
|
30
|
-
|
|
19
|
+
Test: `create-boilerplate`
|
|
20
|
+
|
|
21
|
+
## 📝 Publishing
|
|
22
|
+
|
|
23
|
+
See [../../docs/PUBLISHING.md](../../docs/PUBLISHING.md)
|
|
24
|
+
|
|
25
|
+
## 📄 License
|
|
31
26
|
|
|
32
|
-
|
|
27
|
+
MIT
|
package/dist/index.js
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
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
8
|
const __filename = fileURLToPath(import.meta.url);
|
|
9
9
|
const __dirname = path.dirname(__filename);
|
|
10
|
-
async function createProject() {
|
|
10
|
+
async function createProject(projectNameArg) {
|
|
11
11
|
console.log(chalk.cyan.bold('\n🚀 Welcome to @benjos/boilerplate!\n'));
|
|
12
12
|
const answers = await inquirer.prompt([
|
|
13
13
|
{
|
|
14
14
|
type: 'input',
|
|
15
15
|
name: 'projectName',
|
|
16
16
|
message: 'Project name:',
|
|
17
|
-
default: 'my-threejs-app',
|
|
17
|
+
default: projectNameArg || 'my-threejs-app',
|
|
18
|
+
when: !projectNameArg,
|
|
18
19
|
validate: (input) => {
|
|
19
20
|
if (input === '.')
|
|
20
21
|
return true;
|
|
@@ -36,13 +37,14 @@ async function createProject() {
|
|
|
36
37
|
},
|
|
37
38
|
]);
|
|
38
39
|
// Handle current directory case
|
|
39
|
-
const
|
|
40
|
+
const projectName = projectNameArg || answers.projectName || '.';
|
|
41
|
+
const isCurrentDir = projectName === '.';
|
|
40
42
|
const targetDir = isCurrentDir
|
|
41
43
|
? process.cwd()
|
|
42
|
-
: path.join(process.cwd(),
|
|
44
|
+
: 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 "${
|
|
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,20 @@ async function createProject() {
|
|
|
53
55
|
process.exit(1);
|
|
54
56
|
}
|
|
55
57
|
}
|
|
56
|
-
const
|
|
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
|
-
const templateDir = path.join(__dirname, '..',
|
|
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
65
|
const packageJson = await fs.readJson(packageJsonPath);
|
|
66
|
-
packageJson.name =
|
|
66
|
+
packageJson.name = finalProjectName;
|
|
67
67
|
await fs.writeJson(packageJsonPath, packageJson, { spaces: 4 });
|
|
68
68
|
console.log(chalk.green('✅ Project created successfully!\n'));
|
|
69
69
|
console.log(chalk.cyan('Next steps:\n'));
|
|
70
70
|
if (!isCurrentDir) {
|
|
71
|
-
console.log(chalk.white(` cd ${
|
|
71
|
+
console.log(chalk.white(` cd ${projectName}`));
|
|
72
72
|
}
|
|
73
73
|
console.log(chalk.white(' npm install'));
|
|
74
74
|
console.log(chalk.white(' npm run dev\n'));
|
|
@@ -76,7 +76,8 @@ async function createProject() {
|
|
|
76
76
|
program
|
|
77
77
|
.name('create-boilerplate')
|
|
78
78
|
.description('Create a new Three.js project with Vanilla/React/Vue')
|
|
79
|
-
.version('1.0.
|
|
80
|
-
.
|
|
79
|
+
.version('1.0.1')
|
|
80
|
+
.argument('[project-name]', 'Project name (use "." for current directory)')
|
|
81
|
+
.action((projectName) => createProject(projectName));
|
|
81
82
|
program.parse();
|
|
82
83
|
//# 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":";AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@benjos/create-boilerplate",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "CLI to scaffold Three.js projects with Vanilla/React/Vue support",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
},
|
|
9
9
|
"files": [
|
|
10
10
|
"dist",
|
|
11
|
-
"
|
|
11
|
+
"template-vanilla"
|
|
12
12
|
],
|
|
13
13
|
"scripts": {
|
|
14
14
|
"build": "tsc",
|
|
File without changes
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# 📦 Publishing Guide
|
|
2
|
+
|
|
3
|
+
## First Publish
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npm login
|
|
7
|
+
cd packages/cli
|
|
8
|
+
npm run build
|
|
9
|
+
npm publish --access public
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Updates
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
cd packages/cli
|
|
16
|
+
npm version patch # or minor/major
|
|
17
|
+
npm publish --access public
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Version Types
|
|
21
|
+
|
|
22
|
+
- `patch` → 1.0.0 → 1.0.1 (bug fixes)
|
|
23
|
+
- `minor` → 1.0.0 → 1.1.0 (new features)
|
|
24
|
+
- `major` → 1.0.0 → 2.0.0 (breaking changes)
|
|
25
|
+
|
|
26
|
+
## Test Before Publishing
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npm pack --dry-run
|
|
30
|
+
```
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import eslint from '@eslint/js';
|
|
2
|
+
import eslintPluginPrettier from 'eslint-plugin-prettier/recommended';
|
|
3
|
+
import tseslint from 'typescript-eslint';
|
|
4
|
+
|
|
5
|
+
export default tseslint.config(
|
|
6
|
+
eslint.configs.recommended,
|
|
7
|
+
...tseslint.configs.recommendedTypeChecked,
|
|
8
|
+
...tseslint.configs.stylisticTypeChecked,
|
|
9
|
+
eslintPluginPrettier,
|
|
10
|
+
{
|
|
11
|
+
languageOptions: {
|
|
12
|
+
parserOptions: {
|
|
13
|
+
projectService: true,
|
|
14
|
+
tsconfigRootDir: import.meta.dirname,
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
rules: {
|
|
20
|
+
// Style Rules
|
|
21
|
+
'@typescript-eslint/explicit-member-accessibility': [
|
|
22
|
+
'error',
|
|
23
|
+
{
|
|
24
|
+
accessibility: 'explicit',
|
|
25
|
+
overrides: {
|
|
26
|
+
constructors: 'no-public',
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
'@typescript-eslint/member-ordering': 'off',
|
|
31
|
+
'@typescript-eslint/naming-convention': [
|
|
32
|
+
'error',
|
|
33
|
+
// Variables
|
|
34
|
+
{
|
|
35
|
+
selector: 'variable',
|
|
36
|
+
modifiers: ['const'],
|
|
37
|
+
format: ['camelCase', 'UPPER_CASE', 'PascalCase'],
|
|
38
|
+
},
|
|
39
|
+
// Parameters
|
|
40
|
+
{
|
|
41
|
+
selector: 'parameter',
|
|
42
|
+
format: ['camelCase', 'PascalCase'],
|
|
43
|
+
leadingUnderscore: 'allow',
|
|
44
|
+
},
|
|
45
|
+
// Object properties (constants like DomEvent.MOUSE_DOWN)
|
|
46
|
+
{
|
|
47
|
+
selector: 'objectLiteralProperty',
|
|
48
|
+
format: ['camelCase', 'PascalCase', 'UPPER_CASE'],
|
|
49
|
+
},
|
|
50
|
+
// Public members (instance or static) : camelCase or PascalCase
|
|
51
|
+
{
|
|
52
|
+
selector: ['method', 'property'],
|
|
53
|
+
modifiers: ['public'],
|
|
54
|
+
format: ['camelCase', 'PascalCase'],
|
|
55
|
+
leadingUnderscore: 'forbid',
|
|
56
|
+
},
|
|
57
|
+
// Private static members : _PascalCase or _UPPER_CASE
|
|
58
|
+
{
|
|
59
|
+
selector: ['method', 'property'],
|
|
60
|
+
modifiers: ['private', 'static'],
|
|
61
|
+
format: ['PascalCase', 'UPPER_CASE'],
|
|
62
|
+
leadingUnderscore: 'require',
|
|
63
|
+
},
|
|
64
|
+
// Protected static members : _PascalCase or _UPPER_CASE
|
|
65
|
+
{
|
|
66
|
+
selector: ['method', 'property'],
|
|
67
|
+
modifiers: ['protected', 'static'],
|
|
68
|
+
format: ['PascalCase', 'UPPER_CASE'],
|
|
69
|
+
leadingUnderscore: 'require',
|
|
70
|
+
},
|
|
71
|
+
// Private instance members : _camelCase or _UPPER_CASE
|
|
72
|
+
{
|
|
73
|
+
selector: ['method', 'property'],
|
|
74
|
+
modifiers: ['private'],
|
|
75
|
+
format: ['camelCase', 'UPPER_CASE'],
|
|
76
|
+
leadingUnderscore: 'require',
|
|
77
|
+
},
|
|
78
|
+
// Protected instance members : _camelCase or _UPPER_CASE
|
|
79
|
+
{
|
|
80
|
+
selector: ['method', 'property'],
|
|
81
|
+
modifiers: ['protected'],
|
|
82
|
+
format: ['camelCase', 'UPPER_CASE'],
|
|
83
|
+
leadingUnderscore: 'require',
|
|
84
|
+
},
|
|
85
|
+
// Types
|
|
86
|
+
{
|
|
87
|
+
selector: 'typeLike',
|
|
88
|
+
format: ['PascalCase'],
|
|
89
|
+
},
|
|
90
|
+
],
|
|
91
|
+
'@typescript-eslint/no-unused-vars': [
|
|
92
|
+
'warn',
|
|
93
|
+
{
|
|
94
|
+
argsIgnorePattern: '^_',
|
|
95
|
+
varsIgnorePattern: '^_',
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
|
|
99
|
+
// Best Practices
|
|
100
|
+
'@typescript-eslint/no-explicit-any': 'warn',
|
|
101
|
+
'@typescript-eslint/no-floating-promises': 'error',
|
|
102
|
+
'@typescript-eslint/no-misused-promises': 'error',
|
|
103
|
+
'@typescript-eslint/await-thenable': 'error',
|
|
104
|
+
'@typescript-eslint/no-empty-function': 'off',
|
|
105
|
+
'@typescript-eslint/adjacent-overload-signatures': 'error',
|
|
106
|
+
'@typescript-eslint/prefer-nullish-coalescing': 'warn',
|
|
107
|
+
'@typescript-eslint/no-empty-object-type': 'off',
|
|
108
|
+
'@typescript-eslint/require-await': 'warn',
|
|
109
|
+
'@typescript-eslint/restrict-template-expressions': 'off',
|
|
110
|
+
'@typescript-eslint/explicit-function-return-type': [
|
|
111
|
+
'error',
|
|
112
|
+
{
|
|
113
|
+
allowExpressions: false,
|
|
114
|
+
allowTypedFunctionExpressions: true,
|
|
115
|
+
allowHigherOrderFunctions: true,
|
|
116
|
+
},
|
|
117
|
+
],
|
|
118
|
+
|
|
119
|
+
// Prettier integration
|
|
120
|
+
'prettier/prettier': 'warn',
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
ignores: ['dist/**', 'node_modules/**', '*.config.js', '*.config.ts', 'public/**'],
|
|
125
|
+
}
|
|
126
|
+
);
|
|
@@ -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="app"></div>
|
|
15
|
+
<script type="module" src="/src/main.ts"></script>
|
|
16
|
+
</body>
|
|
17
|
+
</html>
|