sebavan 6 vuotta sitten
vanhempi
commit
163ae60d22

+ 148 - 120
Tools/Gulp/config.json

@@ -56,30 +56,33 @@
             "loseDTSFiles": "LibDeclarations/*.d.ts",
             "distOutputDirectory": "/",
             "packageJSON": "../../package.json",
-            "processDeclaration": {
-                "filename": "babylon.module.d.ts",
+            "umd": {
                 "packageName": "babylonjs",
-                "moduleName": "BABYLON",
-                "moduleSpecifics": [
-                    {
-                        "path": "babylonjs/Debug/axesViewer",
-                        "namespace": "BABYLON.Debug"
-                    },
-                    {
-                        "path": "babylonjs/Debug/boneAxesViewer",
-                        "namespace": "BABYLON.Debug"
-                    },
-                    {
-                        "path": "babylonjs/Debug/physicsViewer",
-                        "namespace": "BABYLON.Debug"
-                    },
-                    {
-                        "path": "babylonjs/Debug/skeletonViewer",
-                        "namespace": "BABYLON.Debug"
-                    }
-                ],
-                "doNotAppendNamespace": true,
-                "prependToNamespaceText": "declare module 'babylonjs' { export = BABYLON; }"
+                "webpackRoot": "BABYLON",
+                "processDeclaration": {
+                    "filename": "babylon.module.d.ts",
+                    "moduleName": "BABYLON",
+                    "moduleSpecifics": [
+                        {
+                            "path": "babylonjs/Debug/axesViewer",
+                            "namespace": "BABYLON.Debug"
+                        },
+                        {
+                            "path": "babylonjs/Debug/boneAxesViewer",
+                            "namespace": "BABYLON.Debug"
+                        },
+                        {
+                            "path": "babylonjs/Debug/physicsViewer",
+                            "namespace": "BABYLON.Debug"
+                        },
+                        {
+                            "path": "babylonjs/Debug/skeletonViewer",
+                            "namespace": "BABYLON.Debug"
+                        }
+                    ],
+                    "doNotAppendNamespace": true,
+                    "prependToNamespaceText": "declare module 'babylonjs' { export = BABYLON; }"
+                }
             },
             "es6": {
                 "packageName": "@babylonjs/core",
@@ -175,13 +178,16 @@
             "mainFolder": "../../materialsLibrary/",
             "srcDirectory": "../../materialsLibrary/src/",
             "distOutputDirectory": "/materialsLibrary/",
-            "processDeclaration": {
-                "filename": "babylonjs.materials.module.d.ts",
+            "umd": {
                 "packageName": "babylonjs-materials",
-                "moduleName": "BABYLON",
-                "importsToRemove": [],
-                "classMap": {
-                    "babylonjs": "BABYLON"
+                "webpackRoot": "MATERIALS",
+                "processDeclaration": {
+                    "filename": "babylonjs.materials.module.d.ts",
+                    "moduleName": "BABYLON",
+                    "importsToRemove": [],
+                    "classMap": {
+                        "babylonjs": "BABYLON"
+                    }
                 }
             },
             "es6": {
@@ -213,13 +219,16 @@
             "mainFolder": "../../postProcessLibrary/",
             "srcDirectory": "../../postProcessLibrary/src/",
             "distOutputDirectory": "/postProcessesLibrary/",
-            "processDeclaration": {
-                "filename": "babylonjs.postProcess.module.d.ts",
+            "umd": {
                 "packageName": "babylonjs-post-process",
-                "moduleName": "BABYLON",
-                "importsToRemove": [],
-                "classMap": {
-                    "babylonjs": "BABYLON"
+                "webpackRoot": "POSTPROCESSES",
+                "processDeclaration": {
+                    "filename": "babylonjs.postProcess.module.d.ts",
+                    "moduleName": "BABYLON",
+                    "importsToRemove": [],
+                    "classMap": {
+                        "babylonjs": "BABYLON"
+                    }
                 }
             },
             "es6": {
@@ -291,13 +300,16 @@
             "mainFolder": "../../proceduralTexturesLibrary/",
             "srcDirectory": "../../proceduralTexturesLibrary/src/",
             "distOutputDirectory": "/proceduralTexturesLibrary/",
-            "processDeclaration": {
-                "filename": "babylonjs.proceduralTextures.module.d.ts",
+            "umd": {
                 "packageName": "babylonjs-procedural-textures",
-                "moduleName": "BABYLON",
-                "importsToRemove": [],
-                "classMap": {
-                    "babylonjs": "BABYLON"
+                "webpackRoot": "PROCEDURALTEXTURES",
+                "processDeclaration": {
+                    "filename": "babylonjs.proceduralTextures.module.d.ts",
+                    "moduleName": "BABYLON",
+                    "importsToRemove": [],
+                    "classMap": {
+                        "babylonjs": "BABYLON"
+                    }
                 }
             },
             "es6": {
@@ -344,32 +356,35 @@
             "mainFolder": "../../loaders/",
             "srcDirectory": "../../loaders/src/",
             "distOutputDirectory": "/loaders/",
-            "processDeclaration": {
-                "filename": "babylonjs.loaders.module.d.ts",
+            "umd": {
                 "packageName": "babylonjs-loaders",
-                "moduleName": "BABYLON",
-                "moduleSpecifics": [
-                    {
-                        "path": "babylonjs-loaders/glTF/1.0",
-                        "namespace": "BABYLON.GLTF1"
-                    },
-                    {
-                        "path": "babylonjs-loaders/glTF/2.0",
-                        "namespace": "BABYLON.GLTF2"
-                    },
-                    {
-                        "path": "babylonjs-loaders/glTF/2.0/glTFLoaderInterfaces",
-                        "namespace": "BABYLON.GLTF2.Loader"
-                    },
-                    {
-                        "path": "babylonjs-loaders/glTF/2.0/Extensions",
-                        "namespace": "BABYLON.GLTF2.Loader.Extensions"
+                "webpackRoot": "LOADERS",
+                "processDeclaration": {
+                    "filename": "babylonjs.loaders.module.d.ts",
+                    "moduleName": "BABYLON",
+                    "moduleSpecifics": [
+                        {
+                            "path": "babylonjs-loaders/glTF/1.0",
+                            "namespace": "BABYLON.GLTF1"
+                        },
+                        {
+                            "path": "babylonjs-loaders/glTF/2.0",
+                            "namespace": "BABYLON.GLTF2"
+                        },
+                        {
+                            "path": "babylonjs-loaders/glTF/2.0/glTFLoaderInterfaces",
+                            "namespace": "BABYLON.GLTF2.Loader"
+                        },
+                        {
+                            "path": "babylonjs-loaders/glTF/2.0/Extensions",
+                            "namespace": "BABYLON.GLTF2.Loader.Extensions"
+                        }
+                    ],
+                    "importsToRemove": [],
+                    "classMap": {
+                        "babylonjs": "BABYLON",
+                        "babylonjs-gltf2interface": "BABYLON.GLTF2"
                     }
-                ],
-                "importsToRemove": [],
-                "classMap": {
-                    "babylonjs": "BABYLON",
-                    "babylonjs-gltf2interface": "BABYLON.GLTF2"
                 }
             },
             "es6": {
@@ -401,35 +416,38 @@
             "mainFolder": "../../serializers/",
             "srcDirectory": "../../serializers/src/",
             "distOutputDirectory": "/serializers/",
-            "processDeclaration": {
-                "filename": "babylonjs.serializers.module.d.ts",
+            "umd": {
                 "packageName": "babylonjs-serializers",
-                "moduleName": "BABYLON",
-                "importsToRemove": [],
-                "classMap": {
-                    "babylonjs": "BABYLON",
-                    "babylonjs-loaders": "BABYLON",
-                    "babylonjs-serializers": "BABYLON",
-                    "babylonjs-gltf2interface": "BABYLON.GLTF2"
-                },
-                "moduleSpecifics": [
-                    {
-                        "path": "babylonjs-serializers/glTF/2.0",
-                        "namespace": "BABYLON.GLTF2.Exporter"
-                    },
-                    {
-                        "path": "babylonjs-serializers/glTF/2.0/Extensions",
-                        "namespace": "BABYLON.GLTF2.Exporter.Extensions"
+                "webpackRoot": "SERIALIZERS",
+                "processDeclaration": {
+                    "filename": "babylonjs.serializers.module.d.ts",
+                    "moduleName": "BABYLON",
+                    "importsToRemove": [],
+                    "classMap": {
+                        "babylonjs": "BABYLON",
+                        "babylonjs-loaders": "BABYLON",
+                        "babylonjs-serializers": "BABYLON",
+                        "babylonjs-gltf2interface": "BABYLON.GLTF2"
                     },
-                    {
-                        "path": "babylonjs-serializers/glTF/2.0/glTFData",
-                        "namespace": "BABYLON"
-                    },
-                    {
-                        "path": "babylonjs-serializers/glTF/2.0/glTFSerializer",
-                        "namespace": "BABYLON"
-                    }
-                ]
+                    "moduleSpecifics": [
+                        {
+                            "path": "babylonjs-serializers/glTF/2.0",
+                            "namespace": "BABYLON.GLTF2.Exporter"
+                        },
+                        {
+                            "path": "babylonjs-serializers/glTF/2.0/Extensions",
+                            "namespace": "BABYLON.GLTF2.Exporter.Extensions"
+                        },
+                        {
+                            "path": "babylonjs-serializers/glTF/2.0/glTFData",
+                            "namespace": "BABYLON"
+                        },
+                        {
+                            "path": "babylonjs-serializers/glTF/2.0/glTFSerializer",
+                            "namespace": "BABYLON"
+                        }
+                    ]
+                }
             },
             "es6": {
                 "packageName": "@babylonjs/serializers",
@@ -450,15 +468,18 @@
             "mainFolder": "../../gui/",
             "srcDirectory": "../../gui/src/",
             "distOutputDirectory": "/gui/",
-            "processDeclaration": {
-                "filename": "babylon.gui.module.d.ts",
+            "umd": {
                 "packageName": "babylonjs-gui",
-                "moduleName": "BABYLON.GUI",
-                "importsToRemove": [],
-                "classMap": {
-                    "babylonjs": "BABYLON",
-                    "babylonjs-loaders": "BABYLON",
-                    "babylonjs-serializers": "BABYLON"
+                "webpackRoot": "BABYLON.GUI",
+                "processDeclaration": {
+                    "filename": "babylon.gui.module.d.ts",
+                    "moduleName": "BABYLON.GUI",
+                    "importsToRemove": [],
+                    "classMap": {
+                        "babylonjs": "BABYLON",
+                        "babylonjs-loaders": "BABYLON",
+                        "babylonjs-serializers": "BABYLON"
+                    }
                 }
             },
             "es6": {
@@ -482,16 +503,18 @@
             "mainFolder": "../../inspector/",
             "srcDirectory": "../../inspector/src/",
             "distOutputDirectory": "/inspector/",
-            "processDeclaration": {
-                "filename": "babylon.inspector.module.d.ts",
+            "umd": {
                 "packageName": "babylonjs-inspector",
-                "moduleName": "INSPECTOR",
-                "importsToRemove": [],
-                "classMap": {
-                    "babylonjs": "BABYLON",
-                    "babylonjs-loaders": "BABYLON",
-                    "babylonjs-serializers": "BABYLON",
-                    "babylonjs-gui": "BABYLON.GUI"
+                "webpackRoot": "INSPECTOR",
+                "processDeclaration": {
+                    "filename": "babylon.inspector.module.d.ts",
+                    "importsToRemove": [],
+                    "classMap": {
+                        "babylonjs": "BABYLON",
+                        "babylonjs-loaders": "BABYLON",
+                        "babylonjs-serializers": "BABYLON",
+                        "babylonjs-gui": "BABYLON.GUI"
+                    }
                 }
             }
         }
@@ -516,18 +539,20 @@
                 "main": "../../dist/preview release/viewer/build/src/index.d.ts",
                 "out": "../../babylon.viewer.module.d.ts"
             },
-            "processDeclaration": {
+            "umd": {
                 "packageName": "babylonjs-viewer",
-                "moduleName": "BabylonViewer",
-                "doNotAppendNamespace": true,
-                "prependText": "/// <reference path=\"./babylon.d.ts\"/>\n/// <reference path=\"./babylon.glTF2Interface.d.ts\"/>\n/// <reference path=\"./babylonjs.loaders.d.ts\"/>\ndeclare module \"babylonjs-loaders\"{ export=BABYLON;}\n",
-                "importsToRemove": [
-                    "pep",
-                    "babylonjs-loaders"
-                ],
-                "classMap": {
-                    "babylonjs": "BABYLON",
-                    "babylonjs-loaders": "BABYLON"
+                "processDeclaration": {
+                    "moduleName": "BabylonViewer",
+                    "doNotAppendNamespace": true,
+                    "prependText": "/// <reference path=\"./babylon.d.ts\"/>\n/// <reference path=\"./babylon.glTF2Interface.d.ts\"/>\n/// <reference path=\"./babylonjs.loaders.d.ts\"/>\ndeclare module \"babylonjs-loaders\"{ export=BABYLON;}\n",
+                    "importsToRemove": [
+                        "pep",
+                        "babylonjs-loaders"
+                    ],
+                    "classMap": {
+                        "babylonjs": "BABYLON",
+                        "babylonjs-loaders": "BABYLON"
+                    }
                 }
             },
             "outputs": [
@@ -586,6 +611,9 @@
             "webpack": "../../../Viewer/webpack.assets.config.js",
             "srcDirectory": "../../Viewer/src/",
             "distOutputDirectory": "/viewer/",
+            "umd": {
+                "packageName": "babylonjs-viewer-assets"
+            },
             "dtsBundle": {
                 "name": "babylonjs-viewer-assets",
                 "main": "../../dist/preview release/viewer/build/src/assets/index.d.ts",

+ 4 - 7
Tools/Gulp/helpers/gulp-processModuleDeclarationToNamespace.js

@@ -1,14 +1,11 @@
 // Gulp Tools
 var fs = require("fs");
 
-var processData = function(data, options) {
+var processData = function(data, packageName, options) {
     var str = "" + data;
 
     // Start process by extracting all lines.
     let lines = str.split('\n');
-    // var firstIndex = lines.findIndex((line => { return line.indexOf(`'${options.packageName}/`) !== -1 }));
-    // var lastIndex = lines.findIndex(((line, idx) => { return line.trim() === '}' && idx > firstIndex }));
-    // lines.splice(firstIndex, lastIndex - firstIndex + 1);
 
     // Let's go line by line and check if we have special folder replacements
     // Replaces declare module 'babylonjs'; by declare module BABYLON for instance
@@ -122,7 +119,7 @@ var processData = function(data, options) {
     // Let s clean up all the import * from BABYLON or the package itself as we know it is part of
     // the same namespace... Should be
     str = str.replace("import * as BABYLON from 'babylonjs';", "");
-    let regexp = new RegExp(`import {(.*)} from ['"]${options.packageName}(.*)['"];`, 'g');
+    let regexp = new RegExp(`import {(.*)} from ['"]${packageName}(.*)['"];`, 'g');
     str = str.replace(regexp, '');
     
     // Let s clean other chosen imports from the mix.
@@ -216,7 +213,7 @@ var processData = function(data, options) {
     return str;
 }
 
-module.exports = function(fileLocation, options, cb) {
+module.exports = function(fileLocation, packageName, options, cb) {
     options = options || { };
 
     fs.readFile(fileLocation, function(err, data) {
@@ -232,7 +229,7 @@ module.exports = function(fileLocation, options, cb) {
 
         var newData = "";
         if (options) {
-            newData = processData(data, options);
+            newData = processData(data, packageName, options);
 
             var namespaceData = newData;
             if (options.prependToNamespaceText) {

+ 4 - 4
Tools/Gulp/tasks/gulpTasks-libraries.js

@@ -137,18 +137,18 @@ var processDTSFiles = function(libraries, settings, cb) {
     let library = libraries[0];
     if (!library.preventLoadLibrary) {
         // Find declaration path.
-        let fileLocation = path.join(outputDirectory, settings.build.processDeclaration.filename);
+        let fileLocation = path.join(outputDirectory, settings.build.umd.processDeclaration.filename);
 
         // Convert the tsc AMD BUNDLED declaration to our expected one
         processAmdDeclarationToModule(tempTypingsPath, {
             output: fileLocation,
-            moduleName: settings.build.processDeclaration.packageName,
+            moduleName: settings.build.umd.packageName,
             entryPoint: library.entry,
-            externals: settings.build.processDeclaration.classMap,
+            externals: settings.build.umd.processDeclaration.classMap,
         });
 
         // Convert Module to Namespace for globals
-        processModuleDeclarationToNamespace(fileLocation, settings.build.processDeclaration);
+        processModuleDeclarationToNamespace(fileLocation, settings.build.umd.packageName, settings.build.umd.processDeclaration);
     }
     cb();
 }

+ 2 - 3
Tools/Gulp/tasks/gulpTasks-viewerLibraries.js

@@ -22,8 +22,7 @@ var buildViewerLibrary = function(library, settings) {
     var outputDirectory = config.build.outputDirectory + settings.build.distOutputDirectory;
 
     settings.build.outputs.forEach(out => {
-        var wpConfigPath = path.join(settings.build.mainFolder, "webpack.config.js");
-        let wpConfig = require(wpConfigPath);
+        let wpConfig = require(settings.build.webpack);
         if (!out.minified) {
             wpConfig.mode = "development";
         }
@@ -47,7 +46,7 @@ var buildViewerLibrary = function(library, settings) {
                 dtsBundle.bundle(settings.build.dtsBundle);
                 // process the declaration
                 let fileLocation = path.join(path.dirname(settings.build.dtsBundle.main), settings.build.dtsBundle.out);
-                processDeclaration(fileLocation, settings.build.processDeclaration);
+                processDeclaration(fileLocation, settings.build.umd.packageName, settings.build.umd.processDeclaration);
             });
         }
 

+ 1 - 1
Tools/Publisher/publisher.js

@@ -170,7 +170,7 @@ function processEs6Packages(version) {
                         colorConsole.log("    Checking Internal Dependency: " + packageName.cyan);
                         let dependencyName = packageName;
                         for (var moduleName of modules) {
-                            if (config[moduleName] && config[moduleName].build.processDeclaration && config[moduleName].build.processDeclaration.packageName === packageName) {
+                            if (config[moduleName] && config[moduleName].build.umd && config[moduleName].build.umd.packageName === packageName) {
                                 if (config[moduleName].build.es6) {
                                     dependencyName = config[moduleName].build.es6.packageName;
                                     colorConsole.log("    Replace Dependency: " + packageName.cyan + " by " + dependencyName.cyan);

+ 4 - 4
Tools/WebpackPlugins/babylonWebpackConfig.js

@@ -26,16 +26,16 @@ module.exports = function defaultConfig(options) {
     return {
         context: src,
         entry: {
-            [settings.build.processDeclaration.packageName]: path.resolve(src, settings.libraries[0].entry),
+            [settings.build.umd.packageName]: path.resolve(src, settings.libraries[0].entry),
         },
         output: {
             path: path.resolve(__dirname, config.build.outputDirectory) + settings.build.distOutputDirectory,
             filename: settings.libraries[0].output,
             libraryTarget: 'umd',
             library: {
-                root: settings.build.processDeclaration.moduleName.split("."),
-                amd: settings.build.processDeclaration.packageName,
-                commonjs: settings.build.processDeclaration.packageName
+                root: settings.build.umd.webpackRoot.split("."),
+                amd: settings.build.umd.packageName,
+                commonjs: settings.build.umd.packageName
             },
             umdNamedDefine: true
         },