Selaa lähdekoodia

publisher es 6 almost there \o/

sebavan 6 vuotta sitten
vanhempi
commit
228d0c43fb

+ 18 - 16
Tools/Config/config.js

@@ -6,19 +6,21 @@ const configFolder = __dirname;
 const rootFolder = path.resolve(configFolder, "../../");
 const tempFolder = path.resolve(rootFolder, config.build.tempDirectory);
 const outputFolder = path.resolve(configFolder, config.build.outputDirectory);
-const localDevES6 = path.join(tempFolder, config.build.localDevES6FolderName);
-const localDevUMD = path.join(tempFolder, config.build.localDevUMDFolderName);
-const ES6Package = path.join(tempFolder, config.build.ES6Package);
-const intermediateES6Package = path.join(tempFolder, config.build.intermediateES6Package);
+const localDevES6Folder = path.join(tempFolder, config.build.localDevES6FolderName);
+const localDevUMDFolder = path.join(tempFolder, config.build.localDevUMDFolderName);
+const sourceES6Folder = path.join(tempFolder, config.build.sourceES6FolderName);
+const distES6Folder = path.join(tempFolder, config.build.distES6FolderName);
+const packageES6Folder = path.join(tempFolder, config.build.packageES6FolderName);
 
 config.computed = {
     rootFolder,
     tempFolder,
     outputFolder,
-    localDevES6,
-    localDevUMD,
-    ES6Package,
-    intermediateES6Package
+    localDevES6Folder,
+    localDevUMDFolder,
+    sourceES6Folder,
+    distES6Folder,
+    packageES6Folder
 }
 
 config.modules.map(function(module) {
@@ -27,10 +29,11 @@ config.modules.map(function(module) {
     const mainDirectory = path.resolve(rootFolder, settings.build.mainFolder);
     const distFolder = (settings.build.distOutputDirectory !== undefined) ? settings.build.distOutputDirectory : module;
     const distDirectory = path.join(outputFolder, distFolder);
-    const localDevES6Directory = path.join(localDevES6, module);
-    const localDevUMDDirectory = path.join(localDevUMD, distFolder);
-    const ES6PackageDirectory = path.join(ES6Package, module);
-    const intermediateES6PackageDirectory = path.join(intermediateES6Package, module);
+    const localDevES6Directory = path.join(localDevES6Folder, module);
+    const localDevUMDDirectory = path.join(localDevUMDFolder, distFolder);
+    const sourceES6Directory = path.join(sourceES6Folder, module);
+    const distES6Directory = path.join(distES6Folder, module);
+    const packageES6Directory = path.join(packageES6Folder, module);
 
     const webpackConfigPath = path.join(mainDirectory, "webpack.config.js");
     const tsConfigPath = path.join(mainDirectory, "tsconfig.json");
@@ -40,7 +43,6 @@ config.modules.map(function(module) {
 
     const tsConfig = require(tsConfigPath);
     const srcDirectory = path.resolve(mainDirectory, tsConfig.compilerOptions.rootDir);
-    const intermediateES6PackageSrcDirectory = path.resolve(intermediateES6PackageDirectory, tsConfig.compilerOptions.rootDir);
 
     const shaderGlob = srcDirectory + "/**/*.fx";
     const shaderTSGlob = srcDirectory + "/**/*.fx.ts";
@@ -59,9 +61,9 @@ config.modules.map(function(module) {
         distDirectory,
         localDevES6Directory,
         localDevUMDDirectory,
-        ES6PackageDirectory,
-        intermediateES6PackageDirectory,
-        intermediateES6PackageSrcDirectory,
+        sourceES6Directory,
+        distES6Directory,
+        packageES6Directory,
         webpackConfigPath,
         tsConfigPath,
         packageJSONPath,

+ 12 - 2
Tools/Config/config.json

@@ -4,8 +4,9 @@
         "tempDirectory": "./.temp/",
         "localDevES6FolderName": "localDevES6",
         "localDevUMDFolderName": "localDevUMD",
-        "intermediateES6Package": "intermediateES6Package",
-        "ES6Package": "packageES6",
+        "sourceES6FolderName": "sourceES6",
+        "distES6FolderName": "distES6",
+        "packageES6FolderName": "packageES6",
         "playgroundDirectory": "../../Playground/",
         "intellisenseFile": "babylon.d.txt",
         "intellisenseSources": [
@@ -39,6 +40,15 @@
         "gui",
         "inspector"
     ],
+    "modulesES6": [
+        "core",
+        "materialsLibrary",
+        "postProcessesLibrary",
+        "proceduralTexturesLibrary",
+        "loaders",
+        "serializers",
+        "gui"
+    ],
     "viewerModules": [
         "viewer",
         "viewer-assets"

+ 1 - 1
Tools/Gulp/gulpfile.js

@@ -40,7 +40,7 @@ gulp.task("typescript-libraries", gulp.series(config.modules, config.viewerModul
 /**
  * Build all es 6 libs.
  */
-gulp.task("typescript-es6", gulp.series(config.modules.map((module) => module + "-es6")));
+gulp.task("typescript-es6", gulp.series(config.modulesES6.map((module) => module + "-es6")));
 
 /**
  * Validate compile the code and check the comments and style case convention through typedoc

+ 13 - 12
Tools/Gulp/tasks/gulpTasks-librariesES6.js

@@ -17,8 +17,8 @@ var config = require("../../Config/config.js");
  * Clean folders.
  */
 var clean = function(settings, cb) {
-    rmDir(settings.computed.intermediateES6PackageDirectory);
-    rmDir(settings.computed.ES6PackageDirectory);
+    rmDir(settings.computed.sourceES6Directory);
+    rmDir(settings.computed.distES6Directory);
     cb();
 }
 
@@ -27,7 +27,7 @@ var clean = function(settings, cb) {
  */
 var source = function(settings) {
     return gulp.src(settings.computed.mainDirectory + "/**/*")
-        .pipe(gulp.dest(settings.computed.intermediateES6PackageDirectory));
+        .pipe(gulp.dest(settings.computed.sourceES6Directory));
 }
 
 /**
@@ -50,7 +50,7 @@ var dep = function(settings) {
     }
 
     return gulp.src(copyPaths, { base: config.computed.rootFolder })
-        .pipe(gulp.dest(config.computed.intermediateES6Package));
+        .pipe(gulp.dest(config.computed.sourceES6FolderName));
 }
 
 /**
@@ -59,11 +59,11 @@ var dep = function(settings) {
 var build = function(settings, cb) {
     // Launch TSC.
     const options = {
-        cwd: settings.computed.intermediateES6PackageDirectory,
+        cwd: settings.computed.sourceES6Directory,
         verbose: true
     };
 
-    let command = `tsc --inlineSources --sourceMap true -t es5 -m esNext --outDir "${settings.computed.ES6PackageDirectory}"`;
+    let command = `tsc --inlineSources --sourceMap true -t es5 -m esNext --outDir "${settings.computed.distES6Directory}"`;
     shelljs.exec(command, options, function(code, stdout, stderr) {
         if (stderr) {
             console.log(stderr);
@@ -109,7 +109,8 @@ var modifySources = function(settings) {
         }
     }
 
-    return gulp.src([settings.computed.intermediateES6PackageDirectory + "/**/*.ts", settings.computed.intermediateES6PackageDirectory + "/**/*.tsx"])
+    return gulp.src([settings.computed.sourceES6Directory + "/**/*.ts", 
+        settings.computed.sourceES6Directory + "/**/*.tsx"])
         .pipe(processImports(replacements));
 }
 
@@ -133,7 +134,7 @@ var modifyTsConfig = function(settings, cb) {
             if (module.build.umd.packageName === pathName) {
                 if (module.build.es6.packageName) {
                     newPathName = module.build.es6.packageName + "*";
-                    newPaths[newPathName] = [ module.computed.ES6PackageDirectory.replace(/\\/g, "/") ];
+                    newPaths[newPathName] = [ module.computed.distES6Directory.replace(/\\/g, "/") ];
                     mapped = true;
                     break;
                 }
@@ -146,7 +147,7 @@ var modifyTsConfig = function(settings, cb) {
 
     tsconfig.compilerOptions.paths = newPaths;
 
-    const destTsConfig = path.join(settings.computed.intermediateES6PackageDirectory, "tsconfig.json");
+    const destTsConfig = path.join(settings.computed.sourceES6Directory, "tsconfig.json");
     fs.writeJSONSync(destTsConfig, tsconfig);
 
     cb();
@@ -157,11 +158,11 @@ var modifyTsConfig = function(settings, cb) {
  */
 var appendLoseDTSFiles = function(settings) {
     if (settings.build.loseDTSFiles) {
-        const indexDTS = path.join(settings.computed.ES6PackageDirectory, "index.d.ts");
+        const indexDTS = path.join(settings.computed.distES6Directory, "index.d.ts");
         return gulp.src([indexDTS, path.join(settings.computed.srcDirectory, settings.build.loseDTSFiles)])
             .pipe(concat("index.d.ts"))
             .pipe(processLooseDeclaration())
-            .pipe(gulp.dest(settings.computed.ES6PackageDirectory));
+            .pipe(gulp.dest(settings.computed.distES6Directory));
     }
     return Promise.resolve();
 }
@@ -189,7 +190,7 @@ function buildES6Library(settings) {
 /**
  * Dynamic es 6 module creation.
  */
-config.modules.map(function(module) {
+config.modulesES6.map(function(module) {
     const settings = config[module];
     gulp.task(module + "-es6", buildES6Library(settings));
 });

+ 23 - 21
Tools/Publisher/publisher.js

@@ -112,44 +112,40 @@ function buildBabylonJSAndDependencies() {
  * Process ES6 Packages.
  */
 function processEs6Packages(version) {
-    modules.forEach(moduleName => {
+    config.modulesES6.forEach(moduleName => {
         let module = config[moduleName];
         let es6Config = module.build.es6;
-        if (!es6Config) {
-            return;
-        }
 
         colorConsole.log("Process " + "ES6".magenta + " Package: " + moduleName.blue.bold);
 
-        let projectPath = module.computed.mainDirectory;
-        let buildPath = module.computed.ES6PackageDirectory;
+        let distPath = module.computed.distES6Directory;
+        let packagePath = module.computed.packageES6Directory;
         let legacyPackageJson = require(module.computed.packageJSONPath);
 
-        colorConsole.log("    Cleanup " + buildPath.cyan);
-        rmDir(buildPath);
+        colorConsole.log("    Cleanup " + packagePath.cyan);
+        rmDir(packagePath);
 
-        let command = 'tsc --inlineSources -t es5 -m esNext -p "' + projectPath + '" --outDir "' + buildPath + '"';
-        colorConsole.log("    Executing " + command.yellow);
-
-        let tscCompile = shelljs.exec(command);
-        if (tscCompile.code !== 0) {
-            throw new Error("Tsc compilation failed");
-        }
+        colorConsole.log("    Copy Dist folder " + distPath.cyan + " to " + packagePath.cyan);
+        fs.copySync(distPath, packagePath);
 
         if (module.build.requiredFiles) {
             module.build.requiredFiles.forEach(file => {
-                colorConsole.log("    Copy required file: ", file.cyan, (buildPath + '/' + path.basename(file)).cyan);
-                fs.copySync(file, buildPath + '/' + path.basename(file));
+                let destination = path.join(packagePath, path.basename(file));
+                colorConsole.log("    Copy required file: ", file.cyan, destination.cyan);
+                fs.copySync(file, destination);
             });
         }
         if (es6Config.requiredFiles) {
             es6Config.requiredFiles.forEach(file => {
-                colorConsole.log("    Copy es6 required file: ", file.cyan, (buildPath + '/' + path.basename(file)).cyan);
-                fs.copySync(file, buildPath + '/' + path.basename(file));
+                let destination = path.join(packagePath, path.basename(file));
+                colorConsole.log("    Copy es6 required file: ", file.cyan, destination.cyan);
+                fs.copySync(file, destination);
             });
         }
 
-        let files = getFiles(buildPath).map(f => f.replace(buildPath + "/", "")).filter(f => f.indexOf("assets/") === -1);
+        let files = getFiles(packagePath)
+            .map(f => f.replace(packagePath + "/", ""))
+            .filter(f => f.indexOf("assets/") === -1);
 
         legacyPackageJson.name = es6Config.packageName;
         legacyPackageJson.version = version;
@@ -184,7 +180,13 @@ function processEs6Packages(version) {
             }
         });
 
-        fs.writeFileSync(buildPath + '/package.json', JSON.stringify(legacyPackageJson, null, 4));
+        // Inject tslib as a dependency
+        var mainPackageJSONPath = path.join(config.rootFolder, "package.json");
+        var mainPackageJSON = require(mainPackageJSONPath);
+        legacyPackageJson["dependencies"]["tslib"] = mainPackageJSON["dependencies"]["tslib"];
+
+        let packageJSONPath = path.join(packagePath, "package.json");
+        fs.writeFileSync(packageJSONPath, JSON.stringify(legacyPackageJson, null, 4));
 
         // Do not publish yet.
         // publish(version, es6Config.packageName, buildPath, true);