Browse Source

upgrading webpack and adjusting gulp run and build

Raanan Weber 7 years ago
parent
commit
783c1f0bfd

+ 2 - 1
Tools/DevLoader/BabylonLoader.js

@@ -239,11 +239,12 @@ var BABYLONDEVTOOLS;
             else {
             else {
                 this.loadScript('/dist/preview release/babylon.max.js');
                 this.loadScript('/dist/preview release/babylon.max.js');
             }
             }
+            this.loadScript('/dist/preview release/gui/babylon.gui.js');
 
 
             // Modules
             // Modules
             if (loadModules) {
             if (loadModules) {
                 for (var i = 0; i < settings.modules.length; i++) {
                 for (var i = 0; i < settings.modules.length; i++) {
-                    if (settings.modules[i] === "viewer") {
+                    if (settings.modules[i] === "viewer" || settings.modules[i] === "gui") {
                         continue;
                         continue;
                     }
                     }
                     this.loadModule(settings[settings.modules[i]]);
                     this.loadModule(settings[settings.modules[i]]);

+ 17 - 60
Tools/Gulp/config.json

@@ -119,7 +119,7 @@
             "videoDome",
             "videoDome",
             "photoDome",
             "photoDome",
             "behaviors",
             "behaviors",
-            "imageProcessing"            
+            "imageProcessing"
         ],
         ],
         "minimal": [
         "minimal": [
             "meshBuilder",
             "meshBuilder",
@@ -132,7 +132,7 @@
             "picking",
             "picking",
             "backgroundMaterial",
             "backgroundMaterial",
             "videoDome"
             "videoDome"
-        ]      
+        ]
     },
     },
     "workloads": {
     "workloads": {
         "core": {
         "core": {
@@ -222,7 +222,7 @@
                 "fresnelFunction",
                 "fresnelFunction",
                 "reflectionFunction",
                 "reflectionFunction",
                 "imageProcessingDeclaration",
                 "imageProcessingDeclaration",
-                "imageProcessingFunctions",                
+                "imageProcessingFunctions",
                 "bumpFragmentFunctions",
                 "bumpFragmentFunctions",
                 "clipPlaneFragmentDeclaration",
                 "clipPlaneFragmentDeclaration",
                 "fogFragmentDeclaration",
                 "fogFragmentDeclaration",
@@ -240,7 +240,7 @@
             "dependUpon": [
             "dependUpon": [
                 "core"
                 "core"
             ]
             ]
-        },   
+        },
         "imageProcessing": {
         "imageProcessing": {
             "files": [
             "files": [
                 "../../src/Materials/babylon.imageProcessingConfiguration.js",
                 "../../src/Materials/babylon.imageProcessingConfiguration.js",
@@ -250,7 +250,7 @@
             "dependUpon": [
             "dependUpon": [
                 "core"
                 "core"
             ]
             ]
-        },        
+        },
         "particles": {
         "particles": {
             "files": [
             "files": [
                 "../../src/Particles/babylon.particle.js",
                 "../../src/Particles/babylon.particle.js",
@@ -1127,7 +1127,7 @@
             "shaders": [
             "shaders": [
                 "anaglyph.fragment"
                 "anaglyph.fragment"
             ]
             ]
-        },       
+        },
         "stereoscopic": {
         "stereoscopic": {
             "files": [
             "files": [
                 "../../src/PostProcess/babylon.stereoscopicInterlacePostProcess.js",
                 "../../src/PostProcess/babylon.stereoscopicInterlacePostProcess.js",
@@ -1145,7 +1145,7 @@
             "shaders": [
             "shaders": [
                 "stereoscopicInterlace.fragment"
                 "stereoscopicInterlace.fragment"
             ]
             ]
-        },           
+        },
         "vr": {
         "vr": {
             "files": [
             "files": [
                 "../../src/PostProcess/babylon.vrDistortionCorrectionPostProcess.js",
                 "../../src/PostProcess/babylon.vrDistortionCorrectionPostProcess.js",
@@ -1763,61 +1763,16 @@
     "gui": {
     "gui": {
         "libraries": [
         "libraries": [
             {
             {
-                "files": [
-                    "../../gui/src/2D/style.ts",
-                    "../../gui/src/2D/valueAndUnit.ts",
-                    "../../gui/src/2D/advancedDynamicTexture.ts",
-                    "../../gui/src/2D/measure.ts",
-                    "../../gui/src/2D/math2D.ts",
-                    "../../gui/src/2D/multiLinePoint.ts",
-                    "../../gui/src/2D/controls/control.ts",
-                    "../../gui/src/2D/controls/container.ts",
-                    "../../gui/src/2D/controls/stackPanel.ts",
-                    "../../gui/src/2D/controls/rectangle.ts",
-                    "../../gui/src/2D/controls/ellipse.ts",
-                    "../../gui/src/2D/controls/line.ts",
-                    "../../gui/src/2D/controls/slider.ts",
-                    "../../gui/src/2D/controls/checkbox.ts",
-                    "../../gui/src/2D/controls/radioButton.ts",
-                    "../../gui/src/2D/controls/textBlock.ts",
-                    "../../gui/src/2D/controls/image.ts",
-                    "../../gui/src/2D/controls/button.ts",
-                    "../../gui/src/2D/controls/colorpicker.ts",
-                    "../../gui/src/2D/controls/inputText.ts",
-                    "../../gui/src/2D/controls/virtualKeyboard.ts",
-                    "../../gui/src/2D/controls/multiLine.ts",
-                    "../../gui/src/2D/controls/grid.ts",                    
-                    "../../gui/src/3D/gui3DManager.ts",
-                    "../../gui/src/3D/materials/fluentMaterial.ts",
-                    "../../gui/src/3D/vector3WithInfo.ts",
-                    "../../gui/src/3D/controls/control3D.ts",
-                    "../../gui/src/3D/controls/container3D.ts",
-                    "../../gui/src/3D/controls/abstractButton3D.ts",
-                    "../../gui/src/3D/controls/button3D.ts",
-                    "../../gui/src/3D/controls/meshButton3D.ts",
-                    "../../gui/src/3D/controls/holographicButton.ts",
-                    "../../gui/src/3D/controls/stackPanel3D.ts",
-                    "../../gui/src/3D/controls/volumeBasedPanel.ts",
-                    "../../gui/src/3D/controls/spherePanel.ts",
-                    "../../gui/src/3D/controls/planePanel.ts",
-                    "../../gui/src/3D/controls/scatterPanel.ts",
-                    "../../gui/src/3D/controls/cylinderPanel.ts"
-                ],
-                "shaderFiles": [
-                    "../../gui/src/3D/materials/shaders/fluent.vertex.fx",
-                    "../../gui/src/3D/materials/shaders/fluent.fragment.fx"
-                ],
+                "files": [],
+                "noBundleInName": true,
                 "output": "babylon.gui.js",
                 "output": "babylon.gui.js",
-                "buildAsModule": true,
-                "moduleName": "babylonjs-gui",
-                "moduleDeclaration": {
-                    "name": "GUI",
-                    "module": "babylonjs-gui"
-                }
+                "webpack": "../../gui/webpack.config.js",
+                "bundle": "true",
+                "babylonIncluded": true
             }
             }
         ],
         ],
         "build": {
         "build": {
-            "srcOutputDirectory": "../../gui/",
+            "srcOutputDirectory": "../../gui/src/",
             "distOutputDirectory": "/gui/"
             "distOutputDirectory": "/gui/"
         }
         }
     },
     },
@@ -1916,7 +1871,8 @@
                     "name": "BabylonViewer",
                     "name": "BabylonViewer",
                     "module": "babylonjs-viewer"
                     "module": "babylonjs-viewer"
                 },
                 },
-                "babylonIncluded": true
+                "babylonIncluded": true,
+                "noWatch": true
             }
             }
         ],
         ],
         "build": {
         "build": {
@@ -1974,7 +1930,8 @@
                     "name": "BabylonViewerAssets",
                     "name": "BabylonViewerAssets",
                     "module": "babylonjs-viewer-assets"
                     "module": "babylonjs-viewer-assets"
                 },
                 },
-                "babylonIncluded": true
+                "babylonIncluded": true,
+                "noWatch": true
             }
             }
         ],
         ],
         "build": {
         "build": {

+ 37 - 25
Tools/Gulp/gulpfile.js

@@ -16,7 +16,6 @@ var merge2 = require("merge2");
 var concat = require("gulp-concat");
 var concat = require("gulp-concat");
 var rename = require("gulp-rename");
 var rename = require("gulp-rename");
 var cleants = require("gulp-clean-ts-extends");
 var cleants = require("gulp-clean-ts-extends");
-var changedInPlace = require("gulp-changed-in-place");
 var runSequence = require("run-sequence");
 var runSequence = require("run-sequence");
 var replace = require("gulp-replace");
 var replace = require("gulp-replace");
 var uncommentShader = require("./gulp-removeShaderComments");
 var uncommentShader = require("./gulp-removeShaderComments");
@@ -25,10 +24,10 @@ var optimisejs = require("gulp-optimize-js");
 var webserver = require("gulp-webserver");
 var webserver = require("gulp-webserver");
 var path = require("path");
 var path = require("path");
 var sass = require("gulp-sass");
 var sass = require("gulp-sass");
-var webpack = require("webpack-stream");
+const webpack = require('webpack');
+var webpackStream = require("webpack-stream");
 var typedoc = require("gulp-typedoc");
 var typedoc = require("gulp-typedoc");
 var validateTypedoc = require("./gulp-validateTypedoc");
 var validateTypedoc = require("./gulp-validateTypedoc");
-var request = require('request');
 var fs = require("fs");
 var fs = require("fs");
 var dtsBundle = require('dts-bundle');
 var dtsBundle = require('dts-bundle');
 const through = require('through2');
 const through = require('through2');
@@ -448,7 +447,7 @@ var buildExternalLibrary = function (library, settings, watch) {
 
 
         if (library.webpack) {
         if (library.webpack) {
             let sequence = [waitAll];
             let sequence = [waitAll];
-            let wpBuild = webpack(require(library.webpack));
+            let wpBuild = webpackStream(require(library.webpack), webpack);
             if (settings.build.outputs) {
             if (settings.build.outputs) {
                 //shoud dtsBundle create the declaration?
                 //shoud dtsBundle create the declaration?
                 if (settings.build.dtsBundle) {
                 if (settings.build.dtsBundle) {
@@ -543,10 +542,10 @@ var buildExternalLibrary = function (library, settings, watch) {
             } else {
             } else {
                 sequence.push(
                 sequence.push(
                     wpBuild
                     wpBuild
-                        .pipe(rename(library.output.replace(".js", library.noBundleInName ? '.js' : ".bundle.js")))
-                        .pipe(addModuleExports(library.moduleDeclaration, { subModule: false, extendsRoot: library.extendsRoot, externalUsingBabylon: true }))
-                        .pipe(uglify())
-                        .pipe(optimisejs())
+                        //.pipe(rename(library.output.replace(".js", library.noBundleInName ? '.js' : ".bundle.js")))
+                        //.pipe(addModuleExports(library.moduleDeclaration, { subModule: false, extendsRoot: library.extendsRoot, externalUsingBabylon: true }))
+                        //.pipe(uglify())
+                        //.pipe(optimisejs())
                         .pipe(gulp.dest(outputDirectory))
                         .pipe(gulp.dest(outputDirectory))
                 )
                 )
             }
             }
@@ -623,22 +622,35 @@ gulp.task("watch", ["srcTscWatch"], function () {
     var tasks = [];
     var tasks = [];
 
 
     config.modules.map(function (module) {
     config.modules.map(function (module) {
+
         config[module].libraries.map(function (library) {
         config[module].libraries.map(function (library) {
-            tasks.push(gulp.watch(library.files, { interval: interval }, function () {
-                console.log(library.output);
-                return buildExternalLibrary(library, config[module], true)
-                    .pipe(debug());
-            }));
-            tasks.push(gulp.watch(library.shaderFiles, { interval: interval }, function () {
-                console.log(library.output);
-                return buildExternalLibrary(library, config[module], true)
-                    .pipe(debug())
-            }));
-            tasks.push(gulp.watch(library.sassFiles, { interval: interval }, function () {
-                console.log(library.output);
-                return buildExternalLibrary(library, config[module], true)
-                    .pipe(debug())
-            }));
+            if (library.webpack) {
+                if (library.noWatch) return;
+                var outputDirectory = config.build.outputDirectory + config[module].build.distOutputDirectory;
+                let wpconfig = require(library.webpack);
+                wpconfig.watch = true;
+                // dev mode and absolute path sourcemaps for debugging
+                wpconfig.mode = "development";
+                wpconfig.output.devtoolModuleFilenameTemplate = "[absolute-resource-path]";
+                //config.stats = "minimal";
+                tasks.push(webpackStream(wpconfig, webpack).pipe(gulp.dest(outputDirectory)))
+            } else {
+                tasks.push(gulp.watch(library.files, { interval: interval }, function () {
+                    console.log(library.output);
+                    return buildExternalLibrary(library, config[module], true)
+                        .pipe(debug());
+                }));
+                tasks.push(gulp.watch(library.shaderFiles, { interval: interval }, function () {
+                    console.log(library.output);
+                    return buildExternalLibrary(library, config[module], true)
+                        .pipe(debug())
+                }));
+                tasks.push(gulp.watch(library.sassFiles, { interval: interval }, function () {
+                    console.log(library.output);
+                    return buildExternalLibrary(library, config[module], true)
+                        .pipe(debug())
+                }));
+            }
         });
         });
     });
     });
 
 
@@ -1096,7 +1108,7 @@ gulp.task("tests-viewer-validation-karma", ["tests-viewer-validation-transpile"]
  */
  */
 gulp.task("tests-viewer-validation-transpile", function (done) {
 gulp.task("tests-viewer-validation-transpile", function (done) {
 
 
-    let wpBuild = webpack(require('../../Viewer//webpack.gulp.config.js'));
+    let wpBuild = webpackStream(require('../../Viewer//webpack.gulp.config.js'));
 
 
     // clean the built directory
     // clean the built directory
     rmDir("../../Viewer/tests/build/");
     rmDir("../../Viewer/tests/build/");
@@ -1115,7 +1127,7 @@ gulp.task("tests-viewer-validation-transpile", function (done) {
  */
  */
 gulp.task("tests-viewer-transpile", function (done) {
 gulp.task("tests-viewer-transpile", function (done) {
 
 
-    let wpBuild = webpack(require('../../Viewer/tests/unit/webpack.config.js'));
+    let wpBuild = webpackStream(require('../../Viewer/tests/unit/webpack.config.js'));
 
 
     // clean the built directory
     // clean the built directory
     rmDir("../../Viewer/tests/build/");
     rmDir("../../Viewer/tests/build/");

+ 1 - 0
Tools/Gulp/package.json

@@ -59,6 +59,7 @@
         "ts-loader": "^2.3.7",
         "ts-loader": "^2.3.7",
         "typedoc": "^0.9.0",
         "typedoc": "^0.9.0",
         "typescript": "~2.8.1",
         "typescript": "~2.8.1",
+        "webpack": "^4.16.0",
         "webpack-stream": "^4.0.1"
         "webpack-stream": "^4.0.1"
     },
     },
     "scripts": {
     "scripts": {

+ 5 - 4
Viewer/package.json

@@ -27,15 +27,16 @@
         "@types/node": "^8.9.4",
         "@types/node": "^8.9.4",
         "base64-font-loader": "0.0.4",
         "base64-font-loader": "0.0.4",
         "base64-image-loader": "^1.2.1",
         "base64-image-loader": "^1.2.1",
+        "base64-inline-loader": "^1.1.1",
         "deepmerge": "^2.1.1",
         "deepmerge": "^2.1.1",
         "handlebars": "^4.0.11",
         "handlebars": "^4.0.11",
         "html-loader": "^0.5.5",
         "html-loader": "^0.5.5",
         "json-loader": "^0.5.7",
         "json-loader": "^0.5.7",
-        "ts-loader": "^2.3.7",
-        "typescript": "^2.7.2",
+        "ts-loader": "^4.4.0",
+        "typescript": "^2.9.2",
         "uglifyjs-webpack-plugin": "^1.2.2",
         "uglifyjs-webpack-plugin": "^1.2.2",
-        "webpack": "^3.11.0",
-        "webpack-dev-server": "^2.11.2"
+        "webpack": "^4.16.0",
+        "webpack-dev-server": "^3.1.4"
     },
     },
     "dependencies": {
     "dependencies": {
         "pepjs": "^0.4.3"
         "pepjs": "^0.4.3"

+ 1 - 1
Viewer/tsconfig.json

@@ -1,6 +1,6 @@
 {
 {
     "compilerOptions": {
     "compilerOptions": {
-        "target": "es2015",
+        "target": "es5",
         "module": "commonjs",
         "module": "commonjs",
         "declaration": true,
         "declaration": true,
         "experimentalDecorators": true,
         "experimentalDecorators": true,

+ 4 - 2
Viewer/webpack.assets.config.js

@@ -1,4 +1,5 @@
 module.exports = {
 module.exports = {
+    context: __dirname,
     entry: [
     entry: [
         __dirname + '/src/assets/index.ts'
         __dirname + '/src/assets/index.ts'
     ],
     ],
@@ -10,8 +11,9 @@ module.exports = {
     resolve: {
     resolve: {
         extensions: ['.ts']
         extensions: ['.ts']
     },
     },
+    mode: "production",
     module: {
     module: {
-        loaders: [{
+        rules: [{
             test: /\.tsx?$/,
             test: /\.tsx?$/,
             use: {
             use: {
                 loader: 'ts-loader',
                 loader: 'ts-loader',
@@ -36,7 +38,7 @@ module.exports = {
         },
         },
         {
         {
             test: /\.(woff|ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
             test: /\.(woff|ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
-            loader: 'base64-font-loader'
+            loader: 'base64-inline-loader?limit=1000&name=[name].[ext]'
         }]
         }]
     }
     }
 }
 }

+ 1 - 1
Viewer/webpack.config.js

@@ -78,7 +78,7 @@ module.exports = /*[
             ])
             ])
         ],
         ],
         module: {
         module: {
-            loaders: [{
+            rules: [{
                 test: /\.tsx?$/,
                 test: /\.tsx?$/,
                 loader: 'ts-loader',
                 loader: 'ts-loader',
                 exclude: /node_modules/
                 exclude: /node_modules/

+ 9 - 10
Viewer/webpack.gulp.config.js

@@ -1,7 +1,10 @@
+const path = require('path');
+const webpack = require('webpack');
+
 module.exports = {
 module.exports = {
-    //context: __dirname,
+    context: __dirname,
     entry: [
     entry: [
-        __dirname + '/src/index.ts'
+        path.resolve(__dirname, './src/index.ts')
     ],
     ],
     output: {
     output: {
         libraryTarget: 'var',
         libraryTarget: 'var',
@@ -22,15 +25,11 @@ module.exports = {
             "babylonjs-viewer-assets": __dirname + '/src/assets/index.ts'
             "babylonjs-viewer-assets": __dirname + '/src/assets/index.ts'
         }
         }
     },
     },
+    mode: "development",
     module: {
     module: {
-        loaders: [{
+        rules: [{
             test: /\.tsx?$/,
             test: /\.tsx?$/,
-            use: {
-                loader: 'ts-loader',
-                options: {
-                    configFile: 'tsconfig-gulp.json'
-                }
-            },
+            loader: 'ts-loader',
             exclude: /node_modules/
             exclude: /node_modules/
         },
         },
         {
         {
@@ -48,7 +47,7 @@ module.exports = {
         },
         },
         {
         {
             test: /\.(woff|ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
             test: /\.(woff|ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
-            loader: 'base64-font-loader'
+            loader: 'base64-inline-loader?limit=1000&name=[name].[ext]'
         }]
         }]
     }
     }
 }
 }

+ 4 - 2
gui/package.json

@@ -4,7 +4,9 @@
     "description": "The js GUI library is an extension you can use to generate interactive user interface.\r It is build on top of the DynamicTexture.",
     "description": "The js GUI library is an extension you can use to generate interactive user interface.\r It is build on top of the DynamicTexture.",
     "scripts": {
     "scripts": {
         "start:server": "webpack-dev-server",
         "start:server": "webpack-dev-server",
-        "build": "webpack",
+        "start:watch": "webpack -w",
+        "build:dev": "webpack",
+        "build:prod": "webpack --mode=production",
         "test": "echo \"Error: no test specified\" && exit 1"
         "test": "echo \"Error: no test specified\" && exit 1"
     },
     },
     "repository": {
     "repository": {
@@ -35,4 +37,4 @@
     "dependencies": {
     "dependencies": {
         "dts-bundle-webpack": "^1.0.0"
         "dts-bundle-webpack": "^1.0.0"
     }
     }
-}
+}

+ 18 - 11
gui/webpack.config.js

@@ -3,12 +3,13 @@ const webpack = require('webpack');
 const DtsBundleWebpack = require('dts-bundle-webpack')
 const DtsBundleWebpack = require('dts-bundle-webpack')
 
 
 module.exports = {
 module.exports = {
+    context: __dirname,
     entry: {
     entry: {
-        'babylonjs-gui': './src/index.ts',
+        'babylonjs-gui': path.resolve(__dirname, './src/index.ts'),
     },
     },
     output: {
     output: {
-        path: path.resolve(__dirname, 'dist'),
-        filename: '[name].js',
+        path: path.resolve(__dirname, '../dist/preview release/gui'),
+        filename: 'babylon.gui.js',
         libraryTarget: 'umd',
         libraryTarget: 'umd',
         library: {
         library: {
             root: ["BABYLON", "GUI"],
             root: ["BABYLON", "GUI"],
@@ -16,7 +17,7 @@ module.exports = {
             commonjs: "babylonjs-gui"
             commonjs: "babylonjs-gui"
         },
         },
         umdNamedDefine: true,
         umdNamedDefine: true,
-        //devtoolModuleFilenameTemplate: '[relative-resource-path]'
+        //devtoolModuleFilenameTemplate: "[absolute-resource-path]"
     },
     },
     resolve: {
     resolve: {
         extensions: [".js", '.ts']
         extensions: [".js", '.ts']
@@ -39,11 +40,11 @@ module.exports = {
         {
         {
             test: /\.fx$/,
             test: /\.fx$/,
             use: [{
             use: [{
-                loader: path.resolve('../Tools/WebpackShaderLoader/index.js')
+                loader: path.resolve(__dirname, '../Tools/WebpackShaderLoader/index.js')
             }]
             }]
         }]
         }]
     },
     },
-    mode: "development",
+    mode: "production",
     devServer: {
     devServer: {
         contentBase: path.join(__dirname, "dist"),
         contentBase: path.join(__dirname, "dist"),
         compress: false,
         compress: false,
@@ -54,10 +55,16 @@ module.exports = {
         new DtsBundleWebpack({
         new DtsBundleWebpack({
             name: "babylonjs-gui",
             name: "babylonjs-gui",
             main: path.resolve(__dirname, './dist/build/index.d.ts'),
             main: path.resolve(__dirname, './dist/build/index.d.ts'),
-            out: path.resolve(__dirname, './dist/index.d.ts'),
+            out: path.resolve(__dirname, '../dist/preview release/gui/babylon.gui.module.d.ts'),
             baseDir: path.resolve(__dirname, './dist/build/'),
             baseDir: path.resolve(__dirname, './dist/build/'),
             headerText: "BabylonJS GUI"
             headerText: "BabylonJS GUI"
-        })
-    ]
-}
-//]
+        }),
+        new webpack.WatchIgnorePlugin([
+            /\.js$/,
+            /\.d\.ts$/
+        ])
+    ],
+    watchOptions: {
+        ignored: [path.resolve(__dirname, './dist/**/*.*'), 'node_modules']
+    }
+}

+ 6 - 3
inspector/webpack.config.js

@@ -1,7 +1,10 @@
+const path = require('path');
+
 module.exports = {
 module.exports = {
+    //context: __dirname,
     entry: [
     entry: [
-        "../../dist/preview release/inspector/babylon.inspector.css",
-        "../../dist/preview release/inspector/babylon.inspector.js"
+        path.resolve(__dirname, "../dist/preview release/inspector/babylon.inspector.css"),
+        path.resolve(__dirname, "../dist/preview release/inspector/babylon.inspector.js")
     ],
     ],
     output: {
     output: {
         libraryTarget: "var",
         libraryTarget: "var",
@@ -14,7 +17,7 @@ module.exports = {
         }
         }
     },
     },
     module: {
     module: {
-        loaders: [
+        rules: [
             { test: /\.css$/, use: ['style-loader', 'css-loader'] },
             { test: /\.css$/, use: ['style-loader', 'css-loader'] },
             {
             {
                 test: /babylon.inspector.js/, use: [
                 test: /babylon.inspector.js/, use: [