Explorar el Código

Changes to the local gulp plugins (DTS modification and module-exports
Now supporting module declarations for typings and UMD

Raanan Weber hace 8 años
padre
commit
df1699adcb
Se han modificado 2 ficheros con 47 adiciones y 12 borrados
  1. 10 3
      Tools/Gulp/gulp-addDtsExport.js
  2. 37 9
      Tools/Gulp/gulp-addModuleExports.js

+ 10 - 3
Tools/Gulp/gulp-addDtsExport.js

@@ -1,12 +1,19 @@
 var gutil = require('gulp-util');
 var through = require('through2');
 
-module.exports = function (varName) {
+module.exports = function (varName, moduleName, subModule) {
     return through.obj(function (file, enc, cb) {
 
         var moduleExportsAddition =
-            'export = ' + varName + ';\n' +
-            'export as namespace ' + varName + ';\n\n';
+            `/// <reference types="babylonjs"/>
+
+declare module '${moduleName}' { 
+    export = ${(subModule ? 'BABYLON.' : '')}${varName}; 
+}
+`;
+
+        //'export = ' + (subModule ? 'BABYLON.' : '') + varName + ';\n';// +
+        //'export as namespace ' + varName + ';\n\n';
 
 
         if (file.isNull()) {

+ 37 - 9
Tools/Gulp/gulp-addModuleExports.js

@@ -1,16 +1,43 @@
 var gutil = require('gulp-util');
 var through = require('through2');
 
-module.exports = function (varName) {
+module.exports = function (varName, subModule) {
     return through.obj(function (file, enc, cb) {
 
-        var moduleExportsAddition =
-          '\nif (((typeof window != "undefined" && window.module) || (typeof module != "undefined")) && typeof module.exports != "undefined") {\n' +
-          '    module.exports = ' + varName + ';\n' +
-          '};\n';
+        var optionalRequire = 'var BABYLON = BABYLON || (typeof require !== \'undefined\' && require("babylonjs"));\n'
+
+        var moduleExportsAddition = `(function universalModuleDefinition(root, factory) {
+            if(typeof exports === 'object' && typeof module === 'object')
+                module.exports = factory();
+            else if(typeof define === 'function' && define.amd)
+                define([], factory);
+            else if(typeof exports === 'object')
+                exports["BABYLON"] = factory();
+            else
+                root["BABYLON"] = factory();
+        })(this, function() {
+            return BABYLON;
+        });
+        `;
+
+        function moduleExportAddition(varName) {
+            return `(function universalModuleDefinition(root, factory) {
+                if(typeof exports === 'object' && typeof module === 'object')
+                    module.exports = factory();
+                else if(typeof define === 'function' && define.amd)
+                    define([], factory);
+                else if(typeof exports === 'object')
+                    exports["${varName}"] = factory();
+                else
+                    root["BABYLON"]${subModule ? '["' + varName + '"]' : ''} = factory();
+            })(this, function() {
+                return BABYLON${subModule ? '.' + varName : ''};
+            });
+            `;
+        }
 
         var extendsAddition =
-        `var __extends = (this && this.__extends) || (function () {
+            `var __extends = (this && this.__extends) || (function () {
             var extendStatics = Object.setPrototypeOf ||
                 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
                 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
@@ -23,12 +50,12 @@ module.exports = function (varName) {
         `;
 
         var decorateAddition =
-        'var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n' +
+            'var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n' +
             'var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n' +
             'if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);\n' +
             'else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n' +
             'return c > 3 && r && Object.defineProperty(target, key, r), r;\n' +
-        '};\n';
+            '};\n';
 
         if (file.isNull()) {
             cb(null, file);
@@ -41,7 +68,8 @@ module.exports = function (varName) {
         }
 
         try {
-            file.contents = new Buffer(decorateAddition.concat(new Buffer(extendsAddition.concat(String(file.contents)).concat(moduleExportsAddition))));
+            let pretext = subModule ? optionalRequire : '';
+            file.contents = new Buffer(pretext.concat(decorateAddition).concat(new Buffer(extendsAddition.concat(String(file.contents)).concat(moduleExportAddition(varName)))));
             this.push(file);
 
         } catch (err) {