|
@@ -3,13 +3,15 @@ var gulp = require("gulp");
|
|
var webpack = require('webpack');
|
|
var webpack = require('webpack');
|
|
var webpackStream = require("webpack-stream");
|
|
var webpackStream = require("webpack-stream");
|
|
var dtsBundle = require('dts-bundle');
|
|
var dtsBundle = require('dts-bundle');
|
|
|
|
+var cp = require('child_process');
|
|
var merge2 = require("merge2");
|
|
var merge2 = require("merge2");
|
|
var path = require("path");
|
|
var path = require("path");
|
|
|
|
|
|
// Gulp Helpers
|
|
// Gulp Helpers
|
|
var uncommentShaders = require('../helpers/gulp-removeShaderComments');
|
|
var uncommentShaders = require('../helpers/gulp-removeShaderComments');
|
|
var processShaders = require("../helpers/gulp-processShaders");
|
|
var processShaders = require("../helpers/gulp-processShaders");
|
|
-var processDeclaration = require('../helpers/gulp-processTypescriptDeclaration');
|
|
|
|
|
|
+var processAmdDeclarationToModule = require('../helpers/gulp-processAmdDeclarationToModule');
|
|
|
|
+var processModuleDeclarationToNamespace = require('../helpers/gulp-processModuleDeclarationToNamespace');
|
|
var rmDir = require("../helpers/gulp-rmDir");
|
|
var rmDir = require("../helpers/gulp-rmDir");
|
|
|
|
|
|
// Import Build Config
|
|
// Import Build Config
|
|
@@ -27,16 +29,19 @@ var buildShaders = function(settings) {
|
|
/**
|
|
/**
|
|
* Build a single library (one of the material of mat lib) from a module (materialsLibrary for instance)
|
|
* Build a single library (one of the material of mat lib) from a module (materialsLibrary for instance)
|
|
*/
|
|
*/
|
|
-var buildExternalLibrary = function(library, settings, cb) {
|
|
|
|
|
|
+var buildExternalLibrariesMultiEntry = function(libraries, settings, cb) {
|
|
|
|
+ // Convert Module to Namespace for globals
|
|
const sequence = [];
|
|
const sequence = [];
|
|
var outputDirectory = config.build.outputDirectory + settings.build.distOutputDirectory;
|
|
var outputDirectory = config.build.outputDirectory + settings.build.distOutputDirectory;
|
|
|
|
|
|
// Webpack Config.
|
|
// Webpack Config.
|
|
var wpConfig = require(settings.build.webpack);
|
|
var wpConfig = require(settings.build.webpack);
|
|
- wpConfig.entry = {
|
|
|
|
- 'main': path.resolve(wpConfig.context, library.entry),
|
|
|
|
- };
|
|
|
|
- wpConfig.output.filename = library.output;
|
|
|
|
|
|
+ wpConfig.entry = { };
|
|
|
|
+ wpConfig.output.filename = settings.isCore ? '[name].js' : '[name].min.js';
|
|
|
|
+ for (let library of settings.libraries) {
|
|
|
|
+ let name = library.output.replace(settings.isCore ? ".js" : ".min.js", "");
|
|
|
|
+ wpConfig.entry[name] = path.resolve(wpConfig.context, library.entry);
|
|
|
|
+ }
|
|
|
|
|
|
// Generate minified file.
|
|
// Generate minified file.
|
|
let wpBuildMin = webpackStream(wpConfig, webpack);
|
|
let wpBuildMin = webpackStream(wpConfig, webpack);
|
|
@@ -46,7 +51,8 @@ var buildExternalLibrary = function(library, settings, cb) {
|
|
// Generate unminified file.
|
|
// Generate unminified file.
|
|
wpConfig.mode = "development";
|
|
wpConfig.mode = "development";
|
|
// Allow babylon.max.js and babylon.js
|
|
// Allow babylon.max.js and babylon.js
|
|
- wpConfig.output.filename = library.maxOutput || wpConfig.output.filename.replace(".min", "");
|
|
|
|
|
|
+ wpConfig.output.filename = settings.isCore ? '[name].max.js' : '[name].js';
|
|
|
|
+ //wpConfig.output.filename = library.maxOutput || wpConfig.output.filename.replace(".min", "");
|
|
let wpBuildMax = webpackStream(wpConfig, webpack);
|
|
let wpBuildMax = webpackStream(wpConfig, webpack);
|
|
let buildEventMax = wpBuildMax.pipe(gulp.dest(outputDirectory));
|
|
let buildEventMax = wpBuildMax.pipe(gulp.dest(outputDirectory));
|
|
sequence.push(buildEventMax);
|
|
sequence.push(buildEventMax);
|
|
@@ -54,11 +60,34 @@ var buildExternalLibrary = function(library, settings, cb) {
|
|
return merge2(sequence)
|
|
return merge2(sequence)
|
|
.on("end", function() {
|
|
.on("end", function() {
|
|
// TODO. Generate all d.ts
|
|
// TODO. Generate all d.ts
|
|
|
|
+ let library = libraries[0];
|
|
if (!library.preventLoadLibrary) {
|
|
if (!library.preventLoadLibrary) {
|
|
- dtsBundle.bundle(settings.build.dtsBundle);
|
|
|
|
-
|
|
|
|
let fileLocation = path.join(outputDirectory, settings.build.processDeclaration.filename);
|
|
let fileLocation = path.join(outputDirectory, settings.build.processDeclaration.filename);
|
|
- processDeclaration(fileLocation, settings.build.processDeclaration);
|
|
|
|
|
|
+ // Generate DTS the Dts Bundle way...
|
|
|
|
+ // dtsBundle.bundle(settings.build.dtsBundle);
|
|
|
|
+
|
|
|
|
+ let srcDirectory = settings.build.srcDirectory;
|
|
|
|
+ let depthCount = srcDirectory.match(/\//g).length - srcDirectory.match(/\.\.\//g).length;
|
|
|
|
+ let tempDirectory = "";
|
|
|
|
+ for (let i = 0; i < depthCount; i++) {
|
|
|
|
+ tempDirectory += "../"
|
|
|
|
+ }
|
|
|
|
+ tempDirectory += ".temp/";
|
|
|
|
+
|
|
|
|
+ // Generate DTS the old way...
|
|
|
|
+ cp.execSync('tsc --module amd --outFile "' + tempDirectory + 'amd.js" --emitDeclarationOnly true', {
|
|
|
|
+ cwd: settings.build.srcDirectory
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ // Convert the tsc AMD BUNDLED declaration to our expected one
|
|
|
|
+ processAmdDeclarationToModule("../../.temp/amd.d.ts", {
|
|
|
|
+ output: fileLocation,
|
|
|
|
+ moduleName: settings.build.processDeclaration.packageName,
|
|
|
|
+ entryPoint: library.entry
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ // Convert Module to Namespace for globals
|
|
|
|
+ processModuleDeclarationToNamespace(fileLocation, settings.build.processDeclaration);
|
|
}
|
|
}
|
|
cb();
|
|
cb();
|
|
});
|
|
});
|
|
@@ -73,12 +102,10 @@ function buildExternalLibraries(settings) {
|
|
|
|
|
|
// Creates the required tasks.
|
|
// Creates the required tasks.
|
|
var tasks = [];
|
|
var tasks = [];
|
|
- for (let library of settings.libraries) {
|
|
|
|
- var shaders = function() { return buildShaders(settings); };
|
|
|
|
- var build = function(cb) { return buildExternalLibrary(library, settings, cb) };
|
|
|
|
|
|
+ var shaders = function() { return buildShaders(settings); };
|
|
|
|
+ var build = function(cb) { return buildExternalLibrariesMultiEntry(settings.libraries, settings, cb) };
|
|
|
|
|
|
- tasks.push(shaders, build);
|
|
|
|
- }
|
|
|
|
|
|
+ tasks.push(shaders, build);
|
|
|
|
|
|
return gulp.series.apply(this, tasks);
|
|
return gulp.series.apply(this, tasks);
|
|
}
|
|
}
|