|
@@ -0,0 +1,104 @@
|
|
|
|
+// Gulp Tools
|
|
|
|
+var gulp = require("gulp");
|
|
|
|
+var path = require("path");
|
|
|
|
+var shelljs = require("shelljs");
|
|
|
|
+
|
|
|
|
+// Gulp Helpers
|
|
|
|
+var rmDir = require("../../NodeHelpers/rmDir");
|
|
|
|
+
|
|
|
|
+// Import Build Config
|
|
|
|
+var config = require("../../Config/config.js");
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * Clean folders.
|
|
|
|
+ */
|
|
|
|
+var clean = function(settings, cb) {
|
|
|
|
+ rmDir(settings.computed.intermediateES6PackageDirectory);
|
|
|
|
+ rmDir(settings.computed.ES6PackageDirectory);
|
|
|
|
+ cb();
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * Copy Sources.
|
|
|
|
+ */
|
|
|
|
+var source = function(settings) {
|
|
|
|
+ return gulp.src(settings.computed.mainDirectory + "/**/*")
|
|
|
|
+ .pipe(gulp.dest(settings.computed.intermediateES6PackageDirectory));
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * Copy dependencies.
|
|
|
|
+ */
|
|
|
|
+var dep = function(settings) {
|
|
|
|
+ const copyPaths = []
|
|
|
|
+ // Add tsconfig rules.
|
|
|
|
+ copyPaths.push(path.join(config.computed.rootFolder, "tsconfigRules.json"));
|
|
|
|
+
|
|
|
|
+ const tsconfig = require(settings.computed.tsConfigPath);
|
|
|
|
+ for (let pathName in tsconfig.compilerOptions.paths) {
|
|
|
|
+ var paths = tsconfig.compilerOptions.paths[pathName];
|
|
|
|
+ for (let dep of paths) {
|
|
|
|
+ const fullPath = path.resolve(settings.computed.mainDirectory,
|
|
|
|
+ tsconfig.compilerOptions.baseUrl,
|
|
|
|
+ dep);
|
|
|
|
+ copyPaths.push(fullPath);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return gulp.src(copyPaths, { base: config.computed.rootFolder })
|
|
|
|
+ .pipe(gulp.dest(config.computed.intermediateES6Package));
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * TSC Build.
|
|
|
|
+ */
|
|
|
|
+var build = function(settings, cb) {
|
|
|
|
+ // Launch TSC.
|
|
|
|
+ const options = {
|
|
|
|
+ cwd: settings.computed.intermediateES6PackageDirectory,
|
|
|
|
+ verbose: true
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ let command = `tsc --inlineSources --sourceMap true -t es5 -m esNext --outDir "${settings.computed.ES6PackageDirectory}"`;
|
|
|
|
+ command
|
|
|
|
+ shelljs.exec(command, options, function(code, stdout, stderr) {
|
|
|
|
+ if (stderr) {
|
|
|
|
+ console.log(stderr);
|
|
|
|
+ }
|
|
|
|
+ if (stdout) {
|
|
|
|
+ console.log(stdout);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (code !== 0) {
|
|
|
|
+ cb("TSC Failed.")
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ cb();
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * Dynamic es 6 module creation.
|
|
|
|
+ */
|
|
|
|
+function buildES6Library(settings) {
|
|
|
|
+ // Creates the required tasks.
|
|
|
|
+ var tasks = [];
|
|
|
|
+
|
|
|
|
+ var cleanup = function(cb) { return clean(settings, cb); };
|
|
|
|
+ var copySource = function() { return source(settings); };
|
|
|
|
+ var dependencies = function() { return dep(settings); };
|
|
|
|
+ var buildes6 = function(cb) { return build(settings, cb) };
|
|
|
|
+
|
|
|
|
+ tasks.push(cleanup, copySource, dependencies, buildes6);
|
|
|
|
+
|
|
|
|
+ return gulp.series.apply(this, tasks);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * Dynamic es 6 module creation.
|
|
|
|
+ */
|
|
|
|
+config.modules.map(function(module) {
|
|
|
|
+ const settings = config[module];
|
|
|
|
+ gulp.task(module + "-es6", buildES6Library(settings));
|
|
|
|
+});
|