stats-gl 2.0.0 → 2.1.0
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 +1 -1
- package/dist/main.cjs +32 -9
- package/dist/main.cjs.map +1 -1
- package/dist/main.js +32 -9
- package/dist/main.js.map +1 -1
- package/dist/stats-gl.d.ts +3 -4
- package/lib/main.ts +62 -18
- package/package.json +12 -12
package/README.md
CHANGED
package/dist/main.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const panel = require("./panel.cjs");
|
|
3
|
-
const _Stats = class
|
|
3
|
+
const _Stats = class _Stats2 {
|
|
4
4
|
constructor({ logsPerSecond = 20, samplesLog = 100, samplesGraph = 10, precision = 2, minimal = false, horizontal = true, mode = 0 } = {}) {
|
|
5
5
|
this.totalCpuDuration = 0;
|
|
6
6
|
this.totalGpuDuration = 0;
|
|
@@ -34,8 +34,8 @@ const _Stats = class _Stats {
|
|
|
34
34
|
graph: []
|
|
35
35
|
};
|
|
36
36
|
this.queryCreated = false;
|
|
37
|
-
this.fpsPanel = this.addPanel(new
|
|
38
|
-
this.msPanel = this.addPanel(new
|
|
37
|
+
this.fpsPanel = this.addPanel(new _Stats2.Panel("FPS", "#0ff", "#002"), 0);
|
|
38
|
+
this.msPanel = this.addPanel(new _Stats2.Panel("CPU", "#0f0", "#020"), 1);
|
|
39
39
|
this.gpuPanel = null;
|
|
40
40
|
this.samplesLog = samplesLog;
|
|
41
41
|
this.samplesGraph = samplesGraph;
|
|
@@ -62,10 +62,24 @@ const _Stats = class _Stats {
|
|
|
62
62
|
const originalRenderMethod = renderer.render;
|
|
63
63
|
const statsInstance = this;
|
|
64
64
|
renderer.render = function(scene, camera) {
|
|
65
|
+
if (statsInstance.info !== void 0) {
|
|
66
|
+
statsInstance.totalGpuDuration = this.info.timestamp.compute + this.info.timestamp.render;
|
|
67
|
+
}
|
|
65
68
|
statsInstance.begin();
|
|
66
69
|
originalRenderMethod.call(this, scene, camera);
|
|
67
70
|
statsInstance.end();
|
|
68
71
|
};
|
|
72
|
+
if (renderer.renderAsync) {
|
|
73
|
+
const originalRenderAsyncMethod = renderer.renderAsync;
|
|
74
|
+
renderer.renderAsync = function(scene, camera) {
|
|
75
|
+
if (statsInstance.info !== void 0) {
|
|
76
|
+
statsInstance.totalGpuDuration = this.info.timestamp.compute + this.info.timestamp.render;
|
|
77
|
+
}
|
|
78
|
+
statsInstance.begin();
|
|
79
|
+
originalRenderAsyncMethod.call(this, scene, camera);
|
|
80
|
+
statsInstance.end();
|
|
81
|
+
};
|
|
82
|
+
}
|
|
69
83
|
this.threeRendererPatched = true;
|
|
70
84
|
}
|
|
71
85
|
resizePanel(panel2, offset) {
|
|
@@ -97,18 +111,25 @@ const _Stats = class _Stats {
|
|
|
97
111
|
}
|
|
98
112
|
this.mode = id;
|
|
99
113
|
}
|
|
100
|
-
init(canvasOrGL) {
|
|
114
|
+
async init(canvasOrGL) {
|
|
101
115
|
if (!canvasOrGL) {
|
|
102
116
|
console.error('Stats: The "canvas" parameter is undefined.');
|
|
103
117
|
return;
|
|
104
118
|
}
|
|
105
|
-
if (canvasOrGL.isWebGLRenderer && !this.threeRendererPatched) {
|
|
119
|
+
if ((canvasOrGL.isWebGLRenderer || canvasOrGL.isWebGPURenderer) && !this.threeRendererPatched) {
|
|
106
120
|
const canvas = canvasOrGL;
|
|
107
121
|
this.patchThreeRenderer(canvas);
|
|
108
122
|
this.gl = canvas.getContext();
|
|
109
|
-
}
|
|
110
|
-
if (!this.gl && canvasOrGL instanceof WebGL2RenderingContext) {
|
|
123
|
+
} else if (!this.gl && canvasOrGL instanceof WebGL2RenderingContext) {
|
|
111
124
|
this.gl = canvasOrGL;
|
|
125
|
+
}
|
|
126
|
+
if (canvasOrGL.isWebGPURenderer) {
|
|
127
|
+
canvasOrGL.backend.trackTimestamp = true;
|
|
128
|
+
if (await canvasOrGL.hasFeatureAsync("timestamp-query")) {
|
|
129
|
+
this.gpuPanel = this.addPanel(new _Stats2.Panel("GPU", "#ff0", "#220"), 2);
|
|
130
|
+
this.info = canvasOrGL.info;
|
|
131
|
+
}
|
|
132
|
+
return;
|
|
112
133
|
} else if (!this.gl && canvasOrGL instanceof HTMLCanvasElement || canvasOrGL instanceof OffscreenCanvas) {
|
|
113
134
|
this.gl = canvasOrGL.getContext("webgl2");
|
|
114
135
|
if (!this.gl) {
|
|
@@ -121,7 +142,7 @@ const _Stats = class _Stats {
|
|
|
121
142
|
}
|
|
122
143
|
this.ext = this.gl.getExtension("EXT_disjoint_timer_query_webgl2");
|
|
123
144
|
if (this.ext) {
|
|
124
|
-
this.gpuPanel = this.addPanel(new
|
|
145
|
+
this.gpuPanel = this.addPanel(new _Stats2.Panel("GPU", "#ff0", "#220"), 2);
|
|
125
146
|
}
|
|
126
147
|
}
|
|
127
148
|
begin() {
|
|
@@ -173,7 +194,9 @@ const _Stats = class _Stats {
|
|
|
173
194
|
this.addToAverage(this.totalGpuDuration, this.averageGpu);
|
|
174
195
|
this.renderCount = 0;
|
|
175
196
|
this.totalCpuDuration = 0;
|
|
176
|
-
this.
|
|
197
|
+
if (this.info === void 0) {
|
|
198
|
+
this.totalGpuDuration = 0;
|
|
199
|
+
}
|
|
177
200
|
this.totalFps = 0;
|
|
178
201
|
this.beginTime = this.endInternal();
|
|
179
202
|
}
|
package/dist/main.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.cjs","sources":["../lib/main.ts"],"sourcesContent":null,"names":["panel","Panel"],"mappings":";;AAQA,MAAM,SAAN,
|
|
1
|
+
{"version":3,"file":"main.cjs","sources":["../lib/main.ts"],"sourcesContent":null,"names":["_Stats","panel","Panel"],"mappings":"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"}
|
package/dist/main.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Panel from "./panel.js";
|
|
2
|
-
const _Stats = class
|
|
2
|
+
const _Stats = class _Stats2 {
|
|
3
3
|
constructor({ logsPerSecond = 20, samplesLog = 100, samplesGraph = 10, precision = 2, minimal = false, horizontal = true, mode = 0 } = {}) {
|
|
4
4
|
this.totalCpuDuration = 0;
|
|
5
5
|
this.totalGpuDuration = 0;
|
|
@@ -33,8 +33,8 @@ const _Stats = class _Stats {
|
|
|
33
33
|
graph: []
|
|
34
34
|
};
|
|
35
35
|
this.queryCreated = false;
|
|
36
|
-
this.fpsPanel = this.addPanel(new
|
|
37
|
-
this.msPanel = this.addPanel(new
|
|
36
|
+
this.fpsPanel = this.addPanel(new _Stats2.Panel("FPS", "#0ff", "#002"), 0);
|
|
37
|
+
this.msPanel = this.addPanel(new _Stats2.Panel("CPU", "#0f0", "#020"), 1);
|
|
38
38
|
this.gpuPanel = null;
|
|
39
39
|
this.samplesLog = samplesLog;
|
|
40
40
|
this.samplesGraph = samplesGraph;
|
|
@@ -61,10 +61,24 @@ const _Stats = class _Stats {
|
|
|
61
61
|
const originalRenderMethod = renderer.render;
|
|
62
62
|
const statsInstance = this;
|
|
63
63
|
renderer.render = function(scene, camera) {
|
|
64
|
+
if (statsInstance.info !== void 0) {
|
|
65
|
+
statsInstance.totalGpuDuration = this.info.timestamp.compute + this.info.timestamp.render;
|
|
66
|
+
}
|
|
64
67
|
statsInstance.begin();
|
|
65
68
|
originalRenderMethod.call(this, scene, camera);
|
|
66
69
|
statsInstance.end();
|
|
67
70
|
};
|
|
71
|
+
if (renderer.renderAsync) {
|
|
72
|
+
const originalRenderAsyncMethod = renderer.renderAsync;
|
|
73
|
+
renderer.renderAsync = function(scene, camera) {
|
|
74
|
+
if (statsInstance.info !== void 0) {
|
|
75
|
+
statsInstance.totalGpuDuration = this.info.timestamp.compute + this.info.timestamp.render;
|
|
76
|
+
}
|
|
77
|
+
statsInstance.begin();
|
|
78
|
+
originalRenderAsyncMethod.call(this, scene, camera);
|
|
79
|
+
statsInstance.end();
|
|
80
|
+
};
|
|
81
|
+
}
|
|
68
82
|
this.threeRendererPatched = true;
|
|
69
83
|
}
|
|
70
84
|
resizePanel(panel, offset) {
|
|
@@ -96,18 +110,25 @@ const _Stats = class _Stats {
|
|
|
96
110
|
}
|
|
97
111
|
this.mode = id;
|
|
98
112
|
}
|
|
99
|
-
init(canvasOrGL) {
|
|
113
|
+
async init(canvasOrGL) {
|
|
100
114
|
if (!canvasOrGL) {
|
|
101
115
|
console.error('Stats: The "canvas" parameter is undefined.');
|
|
102
116
|
return;
|
|
103
117
|
}
|
|
104
|
-
if (canvasOrGL.isWebGLRenderer && !this.threeRendererPatched) {
|
|
118
|
+
if ((canvasOrGL.isWebGLRenderer || canvasOrGL.isWebGPURenderer) && !this.threeRendererPatched) {
|
|
105
119
|
const canvas = canvasOrGL;
|
|
106
120
|
this.patchThreeRenderer(canvas);
|
|
107
121
|
this.gl = canvas.getContext();
|
|
108
|
-
}
|
|
109
|
-
if (!this.gl && canvasOrGL instanceof WebGL2RenderingContext) {
|
|
122
|
+
} else if (!this.gl && canvasOrGL instanceof WebGL2RenderingContext) {
|
|
110
123
|
this.gl = canvasOrGL;
|
|
124
|
+
}
|
|
125
|
+
if (canvasOrGL.isWebGPURenderer) {
|
|
126
|
+
canvasOrGL.backend.trackTimestamp = true;
|
|
127
|
+
if (await canvasOrGL.hasFeatureAsync("timestamp-query")) {
|
|
128
|
+
this.gpuPanel = this.addPanel(new _Stats2.Panel("GPU", "#ff0", "#220"), 2);
|
|
129
|
+
this.info = canvasOrGL.info;
|
|
130
|
+
}
|
|
131
|
+
return;
|
|
111
132
|
} else if (!this.gl && canvasOrGL instanceof HTMLCanvasElement || canvasOrGL instanceof OffscreenCanvas) {
|
|
112
133
|
this.gl = canvasOrGL.getContext("webgl2");
|
|
113
134
|
if (!this.gl) {
|
|
@@ -120,7 +141,7 @@ const _Stats = class _Stats {
|
|
|
120
141
|
}
|
|
121
142
|
this.ext = this.gl.getExtension("EXT_disjoint_timer_query_webgl2");
|
|
122
143
|
if (this.ext) {
|
|
123
|
-
this.gpuPanel = this.addPanel(new
|
|
144
|
+
this.gpuPanel = this.addPanel(new _Stats2.Panel("GPU", "#ff0", "#220"), 2);
|
|
124
145
|
}
|
|
125
146
|
}
|
|
126
147
|
begin() {
|
|
@@ -172,7 +193,9 @@ const _Stats = class _Stats {
|
|
|
172
193
|
this.addToAverage(this.totalGpuDuration, this.averageGpu);
|
|
173
194
|
this.renderCount = 0;
|
|
174
195
|
this.totalCpuDuration = 0;
|
|
175
|
-
this.
|
|
196
|
+
if (this.info === void 0) {
|
|
197
|
+
this.totalGpuDuration = 0;
|
|
198
|
+
}
|
|
176
199
|
this.totalFps = 0;
|
|
177
200
|
this.beginTime = this.endInternal();
|
|
178
201
|
}
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sources":["../lib/main.ts"],"sourcesContent":null,"names":[],"mappings":";AAQA,MAAM,SAAN,
|
|
1
|
+
{"version":3,"file":"main.js","sources":["../lib/main.ts"],"sourcesContent":null,"names":["_Stats"],"mappings":"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"}
|
package/dist/stats-gl.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import * as THREE from 'three';
|
|
2
|
-
|
|
3
1
|
declare class Panel {
|
|
4
2
|
canvas: HTMLCanvasElement;
|
|
5
3
|
context: CanvasRenderingContext2D | null;
|
|
@@ -28,6 +26,7 @@ declare class Stats {
|
|
|
28
26
|
totalGpuDuration: number;
|
|
29
27
|
totalFps: number;
|
|
30
28
|
mode: number;
|
|
29
|
+
info: any;
|
|
31
30
|
dom: HTMLDivElement;
|
|
32
31
|
minimal: boolean;
|
|
33
32
|
horizontal: boolean;
|
|
@@ -67,11 +66,11 @@ declare class Stats {
|
|
|
67
66
|
horizontal?: boolean | undefined;
|
|
68
67
|
mode?: number | undefined;
|
|
69
68
|
});
|
|
70
|
-
patchThreeRenderer(renderer:
|
|
69
|
+
patchThreeRenderer(renderer: any): void;
|
|
71
70
|
resizePanel(panel: Panel, offset: number): void;
|
|
72
71
|
addPanel(panel: Panel, offset: number): Panel;
|
|
73
72
|
showPanel(id: number): void;
|
|
74
|
-
init(canvasOrGL:
|
|
73
|
+
init(canvasOrGL: any): Promise<void>;
|
|
75
74
|
begin(): void;
|
|
76
75
|
end(): void;
|
|
77
76
|
processGpuQueries(): void;
|
package/lib/main.ts
CHANGED
|
@@ -11,6 +11,7 @@ class Stats {
|
|
|
11
11
|
totalGpuDuration: number = 0;
|
|
12
12
|
totalFps: number = 0;
|
|
13
13
|
mode: number;
|
|
14
|
+
info: any;
|
|
14
15
|
dom: HTMLDivElement;
|
|
15
16
|
minimal: boolean;
|
|
16
17
|
horizontal: boolean;
|
|
@@ -59,7 +60,7 @@ class Stats {
|
|
|
59
60
|
|
|
60
61
|
this.isRunningCPUProfiling = false;
|
|
61
62
|
this.minimal = minimal;
|
|
62
|
-
|
|
63
|
+
|
|
63
64
|
this.beginTime = (performance || Date).now();
|
|
64
65
|
this.prevTime = this.beginTime;
|
|
65
66
|
this.prevCpuTime = this.beginTime;
|
|
@@ -114,7 +115,7 @@ class Stats {
|
|
|
114
115
|
|
|
115
116
|
}
|
|
116
117
|
|
|
117
|
-
patchThreeRenderer(renderer:
|
|
118
|
+
patchThreeRenderer(renderer: any) {
|
|
118
119
|
|
|
119
120
|
// Store the original render method
|
|
120
121
|
const originalRenderMethod = renderer.render;
|
|
@@ -123,7 +124,13 @@ class Stats {
|
|
|
123
124
|
const statsInstance = this;
|
|
124
125
|
|
|
125
126
|
// Override the render method on the prototype
|
|
126
|
-
renderer.render = function(scene, camera) {
|
|
127
|
+
renderer.render = function (scene: THREE.Scene, camera: THREE.Camera) {
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
if (statsInstance.info !== undefined) {
|
|
131
|
+
statsInstance.totalGpuDuration = this.info.timestamp.compute + this.info.timestamp.render
|
|
132
|
+
}
|
|
133
|
+
|
|
127
134
|
statsInstance.begin(); // Start tracking for this render call
|
|
128
135
|
|
|
129
136
|
// Call the original render method
|
|
@@ -132,6 +139,28 @@ class Stats {
|
|
|
132
139
|
statsInstance.end(); // End tracking for this render call
|
|
133
140
|
};
|
|
134
141
|
|
|
142
|
+
if (renderer.renderAsync) {
|
|
143
|
+
const originalRenderAsyncMethod = renderer.renderAsync;
|
|
144
|
+
|
|
145
|
+
renderer.renderAsync = function (scene: THREE.Scene, camera: THREE.Camera) {
|
|
146
|
+
|
|
147
|
+
if (statsInstance.info !== undefined) {
|
|
148
|
+
statsInstance.totalGpuDuration = this.info.timestamp.compute + this.info.timestamp.render
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
statsInstance.begin(); // Start tracking for this render call
|
|
152
|
+
|
|
153
|
+
// Call the original render method
|
|
154
|
+
originalRenderAsyncMethod.call(this, scene, camera);
|
|
155
|
+
|
|
156
|
+
statsInstance.end(); // End tracking for this render call
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
|
|
135
164
|
this.threeRendererPatched = true;
|
|
136
165
|
|
|
137
166
|
}
|
|
@@ -185,7 +214,7 @@ class Stats {
|
|
|
185
214
|
|
|
186
215
|
}
|
|
187
216
|
|
|
188
|
-
init(canvasOrGL:
|
|
217
|
+
async init(canvasOrGL: any) {
|
|
189
218
|
if (!canvasOrGL) {
|
|
190
219
|
console.error('Stats: The "canvas" parameter is undefined.');
|
|
191
220
|
return;
|
|
@@ -198,16 +227,26 @@ class Stats {
|
|
|
198
227
|
// this.patchThreeRenderer(canvas as any);
|
|
199
228
|
// this.gl = canvas.getContext();
|
|
200
229
|
// } else
|
|
201
|
-
if ((canvasOrGL as any).isWebGLRenderer && !this.threeRendererPatched) {
|
|
230
|
+
if (((canvasOrGL as any).isWebGLRenderer || (canvasOrGL as any).isWebGPURenderer) && !this.threeRendererPatched) {
|
|
202
231
|
const canvas: any = canvasOrGL
|
|
203
232
|
this.patchThreeRenderer(canvas as any);
|
|
204
233
|
this.gl = canvas.getContext();
|
|
234
|
+
} else if (!this.gl && canvasOrGL instanceof WebGL2RenderingContext) {
|
|
235
|
+
this.gl = canvasOrGL;
|
|
205
236
|
}
|
|
206
237
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
238
|
+
if (canvasOrGL.isWebGPURenderer) {
|
|
239
|
+
|
|
240
|
+
canvasOrGL.backend.trackTimestamp = true
|
|
241
|
+
|
|
242
|
+
if (await canvasOrGL.hasFeatureAsync('timestamp-query')) {
|
|
243
|
+
this.gpuPanel = this.addPanel(new Stats.Panel('GPU', '#ff0', '#220'), 2);
|
|
244
|
+
this.info = canvasOrGL.info
|
|
245
|
+
}
|
|
246
|
+
return;
|
|
210
247
|
}
|
|
248
|
+
// Check if canvasOrGL is already a WebGL2RenderingContext
|
|
249
|
+
|
|
211
250
|
|
|
212
251
|
// Handle HTMLCanvasElement and OffscreenCanvas
|
|
213
252
|
else if (!this.gl && canvasOrGL instanceof HTMLCanvasElement || canvasOrGL instanceof OffscreenCanvas) {
|
|
@@ -236,7 +275,7 @@ class Stats {
|
|
|
236
275
|
}
|
|
237
276
|
|
|
238
277
|
if (!this.gl || !this.ext) return;
|
|
239
|
-
|
|
278
|
+
|
|
240
279
|
if (this.gl && this.ext) {
|
|
241
280
|
if (this.activeQuery) {
|
|
242
281
|
// End the previous query if it's still active
|
|
@@ -267,8 +306,10 @@ class Stats {
|
|
|
267
306
|
}
|
|
268
307
|
|
|
269
308
|
processGpuQueries() {
|
|
309
|
+
|
|
310
|
+
|
|
270
311
|
if (!this.gl || !this.ext) return;
|
|
271
|
-
|
|
312
|
+
|
|
272
313
|
this.totalGpuDuration = 0;
|
|
273
314
|
|
|
274
315
|
this.gpuQueries.forEach((queryInfo, index) => {
|
|
@@ -289,17 +330,20 @@ class Stats {
|
|
|
289
330
|
}
|
|
290
331
|
|
|
291
332
|
update() {
|
|
292
|
-
|
|
333
|
+
|
|
293
334
|
this.processGpuQueries();
|
|
294
335
|
this.endProfiling('cpu-started', 'cpu-finished', 'cpu-duration');
|
|
295
336
|
|
|
296
337
|
// Calculate the total duration of CPU and GPU work for this frame
|
|
297
|
-
this.addToAverage(this.totalCpuDuration
|
|
338
|
+
this.addToAverage(this.totalCpuDuration, this.averageCpu);
|
|
298
339
|
this.addToAverage(this.totalGpuDuration, this.averageGpu);
|
|
299
340
|
|
|
300
341
|
this.renderCount = 0;
|
|
301
342
|
this.totalCpuDuration = 0;
|
|
302
|
-
|
|
343
|
+
|
|
344
|
+
if (this.info === undefined) {
|
|
345
|
+
this.totalGpuDuration = 0;
|
|
346
|
+
}
|
|
303
347
|
this.totalFps = 0;
|
|
304
348
|
|
|
305
349
|
this.beginTime = this.endInternal()
|
|
@@ -415,16 +459,16 @@ class Stats {
|
|
|
415
459
|
|
|
416
460
|
get domElement() {
|
|
417
461
|
// patch for some use case in threejs
|
|
418
|
-
|
|
462
|
+
return this.dom;
|
|
419
463
|
|
|
420
|
-
|
|
464
|
+
}
|
|
421
465
|
|
|
422
466
|
get container() { // @deprecated
|
|
423
467
|
|
|
424
|
-
|
|
425
|
-
|
|
468
|
+
console.warn('Stats: Deprecated! this.container as been replaced to this.dom ')
|
|
469
|
+
return this.dom;
|
|
426
470
|
|
|
427
|
-
|
|
471
|
+
}
|
|
428
472
|
|
|
429
473
|
}
|
|
430
474
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stats-gl",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"author": "Renaud ROHLINGER (https://github.com/RenaudRohlinger)",
|
|
6
6
|
"homepage": "https://github.com/RenaudRohlinger/stats-gl",
|
|
@@ -21,20 +21,20 @@
|
|
|
21
21
|
}
|
|
22
22
|
},
|
|
23
23
|
"sideEffects": false,
|
|
24
|
-
"scripts": {
|
|
25
|
-
"dev": "vite demo",
|
|
26
|
-
"serve": "vite serve demo",
|
|
27
|
-
"build": "tsc && vite build && rollup -c && node ./scripts/copyBuild.js",
|
|
28
|
-
"preview": "vite preview"
|
|
29
|
-
},
|
|
30
24
|
"devDependencies": {
|
|
31
|
-
"@types/three": "^0.
|
|
25
|
+
"@types/three": "^0.162.0",
|
|
32
26
|
"fs-extra": "^11.1.1",
|
|
33
27
|
"path": "^0.12.7",
|
|
34
|
-
"rollup": "^
|
|
28
|
+
"rollup": "^4.12.1",
|
|
35
29
|
"rollup-plugin-dts": "^5.3.0",
|
|
36
|
-
"three": "^0.
|
|
30
|
+
"three": "^0.162.0",
|
|
37
31
|
"typescript": "^5.0.2",
|
|
38
|
-
"vite": "^4.
|
|
32
|
+
"vite": "^4.5.2"
|
|
33
|
+
},
|
|
34
|
+
"scripts": {
|
|
35
|
+
"dev": "vite dev --debug",
|
|
36
|
+
"serve": "vite serve",
|
|
37
|
+
"build": "tsc && vite build && rollup -c && node ./scripts/copyBuild.js",
|
|
38
|
+
"preview": "vite preview"
|
|
39
39
|
}
|
|
40
|
-
}
|
|
40
|
+
}
|