Browse Source

building module-based packages

Raanan Weber 8 years ago
parent
commit
57cbb4ef32
2 changed files with 73 additions and 138 deletions
  1. 32 137
      Tools/Gulp/config.json
  2. 41 1
      Tools/Gulp/gulpfile.js

+ 32 - 137
Tools/Gulp/config.json

@@ -1122,10 +1122,6 @@
                     "../../materialsLibrary/src/shadowOnly/shadowOnly.vertex.fx",
                     "../../materialsLibrary/src/shadowOnly/shadowOnly.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-shadow-only-material",
-                "moduleDeclaration": "ShadowOnlyMaterial",
-                "extendsRoot": true,
                 "output": "babylon.shadowOnlyMaterial.js"
             },
             {
@@ -1136,10 +1132,6 @@
                     "../../materialsLibrary/src/gradient/gradient.vertex.fx",
                     "../../materialsLibrary/src/gradient/gradient.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-gardient-material",
-                "moduleDeclaration": "GardientMaterial",
-                "extendsRoot": true,
                 "output": "babylon.gradientMaterial.js"
             },
             {
@@ -1150,10 +1142,6 @@
                     "../../materialsLibrary/src/normal/normal.vertex.fx",
                     "../../materialsLibrary/src/normal/normal.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-normal-material",
-                "moduleDeclaration": "NormalMaterial",
-                "extendsRoot": true,
                 "output": "babylon.normalMaterial.js"
             },
             {
@@ -1164,10 +1152,6 @@
                     "../../materialsLibrary/src/lava/lava.vertex.fx",
                     "../../materialsLibrary/src/lava/lava.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-lava-material",
-                "moduleDeclaration": "LavaMaterial",
-                "extendsRoot": true,
                 "output": "babylon.lavaMaterial.js"
             },
             {
@@ -1178,10 +1162,6 @@
                     "../../materialsLibrary/src/simple/simple.vertex.fx",
                     "../../materialsLibrary/src/simple/simple.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-simple-material",
-                "moduleDeclaration": "SimpleMaterial",
-                "extendsRoot": true,
                 "output": "babylon.simpleMaterial.js"
             },
             {
@@ -1192,10 +1172,6 @@
                     "../../materialsLibrary/src/water/water.vertex.fx",
                     "../../materialsLibrary/src/water/water.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-water-material",
-                "moduleDeclaration": "WaterMaterial",
-                "extendsRoot": true,
                 "output": "babylon.waterMaterial.js"
             },
             {
@@ -1206,10 +1182,6 @@
                     "../../materialsLibrary/src/fire/fire.vertex.fx",
                     "../../materialsLibrary/src/fire/fire.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-fire-material",
-                "moduleDeclaration": "FireMaterial",
-                "extendsRoot": true,
                 "output": "babylon.fireMaterial.js"
             },
             {
@@ -1220,10 +1192,6 @@
                     "../../materialsLibrary/src/fur/fur.vertex.fx",
                     "../../materialsLibrary/src/fur/fur.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-fur-material",
-                "moduleDeclaration": "FurMaterial",
-                "extendsRoot": true,
                 "output": "babylon.furMaterial.js"
             },
             {
@@ -1234,10 +1202,6 @@
                     "../../materialsLibrary/src/terrain/terrain.vertex.fx",
                     "../../materialsLibrary/src/terrain/terrain.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-terrain-material",
-                "moduleDeclaration": "TerrainMaterial",
-                "extendsRoot": true,
                 "output": "babylon.terrainMaterial.js"
             },
             {
@@ -1248,10 +1212,6 @@
                     "../../materialsLibrary/src/triPlanar/triplanar.vertex.fx",
                     "../../materialsLibrary/src/triPlanar/triplanar.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-tri-planar-material",
-                "moduleDeclaration": "TriPlanarMaterial",
-                "extendsRoot": true,
                 "output": "babylon.triPlanarMaterial.js"
             },
             {
@@ -1262,10 +1222,6 @@
                     "../../materialsLibrary/src/sky/sky.vertex.fx",
                     "../../materialsLibrary/src/sky/sky.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-sky-material",
-                "moduleDeclaration": "SkyMaterial",
-                "extendsRoot": true,
                 "output": "babylon.skyMaterial.js"
             },
             {
@@ -1276,20 +1232,12 @@
                     "../../materialsLibrary/src/grid/grid.vertex.fx",
                     "../../materialsLibrary/src/grid/grid.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-grid-material",
-                "moduleDeclaration": "GridMaterial",
-                "extendsRoot": true,
                 "output": "babylon.gridMaterial.js"
             },
             {
                 "files": [
                     "../../materialsLibrary/src/custom/babylon.customMaterial.ts"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-custom-material",
-                "moduleDeclaration": "CustomMaterial",
-                "extendsRoot": true,
                 "output": "babylon.customMaterial.js"
             },
             {
@@ -1300,10 +1248,6 @@
                     "../../materialsLibrary/src/cell/cell.vertex.fx",
                     "../../materialsLibrary/src/cell/cell.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-cell-material",
-                "moduleDeclaration": "CellMaterial",
-                "extendsRoot": true,
                 "output": "babylon.cellMaterial.js"
             },
             {
@@ -1326,16 +1270,17 @@
                     "../../materialsLibrary/src/legacyPBR/legacyColorGrading.fx",
                     "../../materialsLibrary/src/legacyPBR/legacyColorGradingDefinition.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-legacy-pbr-material",
-                "moduleDeclaration": "LegacyPBRMaterial",
-                "extendsRoot": true,
                 "output": "babylon.legacyPbrMaterial.js"
             }
         ],
         "build": {
             "srcOutputDirectory": "../../materialsLibrary/",
-            "distOutputDirectory": "/materialsLibrary/"
+            "distOutputDirectory": "/materialsLibrary/",
+            "buildAsModule": true,
+            "moduleName": "babylonjs-materials",
+            "outputFilename": "babylonjs.materials",
+            "moduleDeclaration": "BJSMaterials",
+            "extendsRoot": true
         }
     },
     "postProcessesLibrary": {
@@ -1347,10 +1292,6 @@
                 "shaderFiles": [
                     "../../postProcessLibrary/src/asciiArt/asciiart.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-ascii-art-post-process",
-                "moduleDeclaration": "AsciiArtPostProcess",
-                "extendsRoot": true,
                 "output": "babylon.asciiArtPostProcess.js"
             },
             {
@@ -1360,16 +1301,17 @@
                 "shaderFiles": [
                     "../../postProcessLibrary/src/digitalRain/digitalrain.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-digital-rain-post-process",
-                "moduleDeclaration": "DigitalRainPostProcess",
-                "extendsRoot": true,
                 "output": "babylon.digitalRainPostProcess.js"
             }
         ],
         "build": {
             "srcOutputDirectory": "../../postProcessLibrary/",
-            "distOutputDirectory": "/postProcessesLibrary/"
+            "distOutputDirectory": "/postProcessesLibrary/",
+            "buildAsModule": true,
+            "moduleName": "babylonjs-post-process",
+            "outputFilename": "babylonjs.postProcess",
+            "moduleDeclaration": "BJSPostProcess",
+            "extendsRoot": true
         }
     },
     "proceduralTexturesLibrary": {
@@ -1381,10 +1323,6 @@
                 "shaderFiles": [
                     "../../proceduralTexturesLibrary/src/wood/woodProceduralTexture.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-wood-procedural-texture",
-                "moduleDeclaration": "WoodProceduralTexture",
-                "extendsRoot": true,
                 "output": "babylon.woodProceduralTexture.js"
             },
             {
@@ -1394,10 +1332,6 @@
                 "shaderFiles": [
                     "../../proceduralTexturesLibrary/src/fire/fireProceduralTexture.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-fire-procedural-texture",
-                "moduleDeclaration": "FireProceduralTexture",
-                "extendsRoot": true,
                 "output": "babylon.fireProceduralTexture.js"
             },
             {
@@ -1407,10 +1341,6 @@
                 "shaderFiles": [
                     "../../proceduralTexturesLibrary/src/cloud/cloudProceduralTexture.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-cloud-procedural-texture",
-                "moduleDeclaration": "CloudProceduralTexture",
-                "extendsRoot": true,
                 "output": "babylon.cloudProceduralTexture.js"
             },
             {
@@ -1420,10 +1350,6 @@
                 "shaderFiles": [
                     "../../proceduralTexturesLibrary/src/grass/grassProceduralTexture.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-grass-procedural-texture",
-                "moduleDeclaration": "GrassProceduralTexture",
-                "extendsRoot": true,
                 "output": "babylon.grassProceduralTexture.js"
             },
             {
@@ -1433,10 +1359,6 @@
                 "shaderFiles": [
                     "../../proceduralTexturesLibrary/src/road/roadProceduralTexture.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-road-procedural-texture",
-                "moduleDeclaration": "RoadProceduralTexture",
-                "extendsRoot": true,
                 "output": "babylon.roadProceduralTexture.js"
             },
             {
@@ -1446,10 +1368,6 @@
                 "shaderFiles": [
                     "../../proceduralTexturesLibrary/src/brick/brickProceduralTexture.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-brick-procedural-texture",
-                "moduleDeclaration": "BrickProceduralTexture",
-                "extendsRoot": true,
                 "output": "babylon.brickProceduralTexture.js"
             },
             {
@@ -1459,10 +1377,6 @@
                 "shaderFiles": [
                     "../../proceduralTexturesLibrary/src/marble/marbleProceduralTexture.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-marble-procedural-texture",
-                "moduleDeclaration": "MarbleProceduralTexture",
-                "extendsRoot": true,
                 "output": "babylon.marbleProceduralTexture.js"
             },
             {
@@ -1472,10 +1386,6 @@
                 "shaderFiles": [
                     "../../proceduralTexturesLibrary/src/starfield/starfieldProceduralTexture.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-starfield-procedural-texture",
-                "moduleDeclaration": "StarfieldProceduralTexture",
-                "extendsRoot": true,
                 "output": "babylon.starfieldProceduralTexture.js"
             },
             {
@@ -1485,10 +1395,6 @@
                 "shaderFiles": [
                     "../../proceduralTexturesLibrary/src/normalMap/normalMapProceduralTexture.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-normal-map-procedural-texture",
-                "moduleDeclaration": "NormalMapProceduralTexture",
-                "extendsRoot": true,
                 "output": "babylon.normalMapProceduralTexture.js"
             },
             {
@@ -1498,16 +1404,17 @@
                 "shaderFiles": [
                     "../../proceduralTexturesLibrary/src/perlinNoise/perlinNoiseProceduralTexture.fragment.fx"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-perlin-noise-procedural-texture",
-                "moduleDeclaration": "PerlinNoiseProceduralTexture",
-                "extendsRoot": true,
                 "output": "babylon.perlinNoiseProceduralTexture.js"
             }
         ],
         "build": {
             "srcOutputDirectory": "../../proceduralTexturesLibrary/",
-            "distOutputDirectory": "/proceduralTexturesLibrary/"
+            "distOutputDirectory": "/proceduralTexturesLibrary/",
+            "buildAsModule": true,
+            "moduleName": "babylonjs-procedural-textures",
+            "outputFilename": "babylonjs.proceduralTextures",
+            "moduleDeclaration": "BJSProceduralTextures",
+            "extendsRoot": true
         }
     },
     "loaders": {
@@ -1516,20 +1423,12 @@
                 "files": [
                     "../../loaders/src/STL/babylon.stlFileLoader.ts"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-stl-loader",
-                "moduleDeclaration": "STLFileLoader",
-                "extendsRoot": true,
                 "output": "babylon.stlFileLoader.js"
             },
             {
                 "files": [
                     "../../loaders/src/OBJ/babylon.objFileLoader.ts"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-obj-loader",
-                "moduleDeclaration": "OBJFileLoader",
-                "extendsRoot": true,
                 "output": "babylon.objFileLoader.js"
             },
             {
@@ -1542,10 +1441,7 @@
                     "../../loaders/src/glTF/1.0/babylon.glTFBinaryExtension.ts",
                     "../../loaders/src/glTF/1.0/babylon.glTFMaterialsCommonExtension.ts"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-gltf1-loader",
-                "moduleDeclaration": "glTF1FileLoader",
-                "extendsRoot": true,
+                "doNotIncludeInBundle": true,
                 "output": "babylon.glTF1FileLoader.js"
             },
             {
@@ -1558,10 +1454,7 @@
                     "../../loaders/src/glTF/2.0/Extensions/MSFT_lod.ts",
                     "../../loaders/src/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.ts"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-gltf2-loader",
-                "moduleDeclaration": "glTF2FileLoader",
-                "extendsRoot": true,
+                "doNotIncludeInBundle": true,
                 "output": "babylon.glTF2FileLoader.js"
             },
             {
@@ -1580,16 +1473,17 @@
                     "../../loaders/src/glTF/2.0/Extensions/MSFT_lod.ts",
                     "../../loaders/src/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.ts"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-gltf-loader",
-                "moduleDeclaration": "glTFFileLoader",
-                "extendsRoot": true,
                 "output": "babylon.glTFFileLoader.js"
             }
         ],
         "build": {
             "srcOutputDirectory": "../../loaders/",
-            "distOutputDirectory": "/loaders/"
+            "distOutputDirectory": "/loaders/",
+            "buildAsModule": true,
+            "moduleName": "babylonjs-loaders",
+            "outputFilename": "babylonjs.loaders",
+            "moduleDeclaration": "BJSLoaders",
+            "extendsRoot": true
         }
     },
     "serializers": {
@@ -1598,16 +1492,17 @@
                 "files": [
                     "../../serializers/src/OBJ/babylon.objSerializer.ts"
                 ],
-                "buildAsModule": true,
-                "moduleName": "babylonjs-obj-serializer",
-                "moduleDeclaration": "OBJSerializer",
-                "extendsRoot": true,
                 "output": "babylon.objSerializer.js"
             }
         ],
         "build": {
             "srcOutputDirectory": "../../serializers/",
-            "distOutputDirectory": "/serializers/"
+            "distOutputDirectory": "/serializers/",
+            "buildAsModule": true,
+            "moduleName": "babylonjs-serializers",
+            "outputFilename": "babylonjs.serializers",
+            "moduleDeclaration": "BJSSerializers",
+            "extendsRoot": true
         }
     },
     "gui": {

+ 41 - 1
Tools/Gulp/gulpfile.js

@@ -256,7 +256,47 @@ var buildExternalLibraries = function (settings) {
         return buildExternalLibrary(library, settings, false);
     });
 
-    return merge2(tasks);
+    let mergedTasks = merge2(tasks);
+
+    if (settings.build.buildAsModule) {
+        mergedTasks.on('end', function () {
+            //generate js file list
+            let files = settings.libraries.filter(function (lib) {
+                return !lib.doNotIncludeInBundle;
+            }).map(function (lib) {
+                return config.build.outputDirectory + settings.build.distOutputDirectory + lib.output;
+            });
+
+            var outputDirectory = config.build.outputDirectory + settings.build.distOutputDirectory;
+
+            let srcTask = gulp.src(files)
+                .pipe(concat(settings.build.outputFilename + '.js'))
+                .pipe(replace(extendsSearchRegex, ""))
+                .pipe(replace(decorateSearchRegex, ""))
+                .pipe(replace(referenceSearchRegex, ""))
+                .pipe(addModuleExports(settings.build.moduleDeclaration, true, settings.build.extendsRoot))
+                .pipe(gulp.dest(outputDirectory))
+                .pipe(cleants())
+                .pipe(rename({ extname: ".min.js" }))
+                .pipe(uglify())
+                .pipe(optimisejs())
+                .pipe(gulp.dest(outputDirectory));
+
+            let dtsFiles = files.map(function (filename) {
+                return filename.replace(".js", ".d.ts");
+            });
+
+            let dtsTask = gulp.src(dtsFiles)
+                .pipe(concat(settings.build.outputFilename + '.module.d.ts'))
+                .pipe(replace(referenceSearchRegex, ""))
+                .pipe(addDtsExport(settings.build.moduleDeclaration, settings.build.moduleName, true, settings.build.extendsRoot))
+                .pipe(gulp.dest(outputDirectory));
+
+            return merge2([srcTask, dtsTask]);
+        });
+    }
+
+    return mergedTasks;
 }
 
 var buildExternalLibrary = function (library, settings, watch) {