浏览代码

resolve es6 plugin for viewer

Trevor Baron 6 年之前
父节点
当前提交
84705279ef
共有 2 个文件被更改,包括 33 次插入2 次删除
  1. 27 0
      Tools/WebpackPlugins/viewerResolve.js
  2. 6 2
      Viewer/webpack.config.js

+ 27 - 0
Tools/WebpackPlugins/viewerResolve.js

@@ -0,0 +1,27 @@
+var path = require('path');
+var assign = require('object-assign');
+var forEachBail = require('enhanced-resolve/lib/forEachBail');
+var basename = require('enhanced-resolve/lib/getPaths').basename;
+
+module.exports = function (modulesToResolveToEs5) {
+  return {
+    apply: doApply.bind(this, modulesToResolveToEs5)
+  };
+};
+
+function doApply(modulesToResolveToEs5, resolver) {
+  // file type taken from: https://github.com/webpack/enhanced-resolve/blob/v4.0.0/test/plugins.js
+  var target = resolver.ensureHook("undescribed-raw-file");
+  //console.log(resolver.hooks);
+  resolver.getHook("resolve")
+    .tapAsync("DirectoryNamedWebpackPlugin", (request, resolveContext, callback) => {
+        for(var package of modulesToResolveToEs5){
+            if(request.request.indexOf(package+"/") == 0){
+                const newRequest = Object.assign({}, request, { request: package, });
+                return resolver.doResolve(target, newRequest, "viewer resolved", resolveContext, callback);
+            }
+        }
+        
+        return callback();
+    });
+}

+ 6 - 2
Viewer/webpack.config.js

@@ -2,6 +2,7 @@ const path = require('path');
 const webpack = require('webpack');
 
 const babylonExternals = require('../Tools/WebpackPlugins/babylonExternals');
+const ViewerResolve = require('../Tools/WebpackPlugins/viewerResolve');
 
 module.exports = 
     {
@@ -24,9 +25,12 @@ module.exports =
                 "babylonjs-materials": __dirname + '/../dist/preview release/materialsLibrary/babylonjs.materials.js',
                 "babylonjs-loaders": __dirname + '/../dist/preview release/loaders/babylonjs.loaders.js',
                 "babylonjs-viewer-assets": __dirname + '/src/assets/index.ts'
-            }
+            },
+            plugins: [
+                new ViewerResolve(["babylonjs", "babylonjs-loaders"])
+            ]
         },
-        externals: [babylonExternals()],
+        externals: [],
         mode: "development",
         devtool: 'source-map',
         plugins: [