2016-08-19 85 views
0

我有我的JSPM Build以下配置使用打字稿编译:JSPM Builder:如何依赖其他模块?

var Builder = require('jspm').Builder; 

var builder = new Builder('.'); 
    builder.reset(); 

builder.loadConfig('./jspm.conf.js') 
    .then(function() { 

     builder.config({ 
      defaultJSExtensions: false, 
      transpiler: "typescript", 
      typescriptOptions: { 
       "module": "system", 
       "experimentalDecorators": true, 
       "resolveAmbientRefs": true 
      }, 
      packages: { 
       "source": { 
        "main": "app/index", 
        "defaultExtension": "ts", 
        "meta": { 
         "*.ts": { 
          "loader": "ts" 
         }, 
         "*.css": { 
          "loader": "css" 
         } 
        } 
       } 
      }, 
      packageConfigPaths: [ 
       "npm:@*/*.json", 
       "npm:*.json", 
       "github:*/*.json" 
      ], 
      meta: { 
       "three": { 
        "format": "global", 
        "exports": "THREE" 
       }, 
       "three-firstpersoncontrols": { 
        "deps": "three" 
       } 
      }, 
      map: { 
       "three": "github:mrdoob/[email protected]/build/three.js", 
       "three-firstpersoncontrols": "github:mrdoob/[email protected]/examples/js/controls/FirstPersonControls.js" 
      } 
     }); 

     var promises = new Array(); 

     promises.push(builder.buildStatic('source', './build/js/app.min.js', { 
      sourceMaps: false, 
      minify: true, 
      mangle: false 
     })); 

     return Promise.all(promises); 
    }) 
    .then(function() { 
     cb(); 
    }) 
    .catch(function(err) { 
     console.log('Build Failed. Error Message: ', err); 
    }); 

我试图用含有例如功能单独的文件一起使用THREE.jsFirstPersonControls。路径在map部分中定义,并且这些都工作得很好。

捆绑后,我得到的消息是THREE.FirstPersonControls is not a contructor。目前我的猜测是,单独模块three-firstpersoncontrols不依赖于全局THREE变量,因此无法调用构造函数THREE.FirstPersonControls

所以我的问题是:

如何让这些单独的模块依赖我的全球THREE模块上构建?

回答

0

过了一会儿,我发现了问题是这个部分:

typescriptOptions: { 
    "module": "system", // <-- THIS LINE 
    "experimentalDecorators": true, 
    "resolveAmbientRefs": true 
} 

我有我的模块格式改变从systemamd工作,所以现在的配置已经成为:

typescriptOptions: { 
    "module": "amd", 
    "experimentalDecorators": true, 
    "resolveAmbientRefs": true 
} 

希望有这个问题的任何人都可以使用这个答案。