Angular 2如何使用子依赖angular-cli加载第三方供应商节点模块

在Angular 2中加载一个单独的节点模块 ,在wiki中很好地描述了一个angular-cli自引导项目。 只是很好奇,我怎样才能很好地加载一个更复杂的节点模块在一个项目启动angular-cli?

例如,angular2-apollo依赖于像apollo-client,graphql,lodash等几个子依赖项。

我将节点模块添加到angular-cli-build.js

 var Angular2App = require('angular-cli/lib/broccoli/angular2-app'); module.exports = function(defaults) { return new Angular2App(defaults, { vendorNpmFiles: [ '...', 'angular2-apollo/**' ] }); }; 

并注册节点模块ins system-config.js

 const barrels: string[] = [ // ... // Thirdparty barrels. 'rxjs', 'angular2-apollo', // App specific barrels. // ... ]; // ... // Apply the CLI SystemJS configuration. System.config({ map: { '@angular': 'vendor/@angular', 'rxjs': 'vendor/rxjs', 'angular2-apollo':'vendor/angular2-apollo/build/src', 'main': 'main.js', }, packages: cliSystemConfigPackages }); 

不过这只是加载angular2-apollo。 angular2-apollo的子依赖没有被加载。 如何在angular-cli bootstraped项目中加载system.js的子依赖关系?

所以,你正面临着一个非常恼人的问题System.js,并有一个关于Angular CLI的一个公开的问题在这里: https : //github.com/angular/angular-cli/issues/882

它基本上意味着你必须在system.config.ts文件中指定所有的依赖关系,并将它们全部加载到angular-cli-build.js文件中….恐怖的我知道…

也许在将来会发生: https : //github.com/angular/angular-cli/issues/909

但是,直到Angular CLI将变得更好,这里是一个初学者的应用程序,其中包括Angular 2.0和angular2-apollo与所有依赖(甚至与模拟GraphQL服务器..) – https://github.com/Urigo/apollo -船

你可以在这里查看system.config.ts和angular-cli-build.js ,看看如何在angular2-apolloapollo-clientlodash (以及所有需要的依赖关系), redux和many更多(太多….)

我认为你在system.config.ts中做错了。 用户包的configuration应该在这个文件的上半部分。

 const map: any = { 'angular2-apollo': 'vendor/angular2-apollo/build' }; /** User packages configuration. */ const packages: any = { 'angular2-apollo': { main: 'main.js', defaultExtension: 'js' }, }; 

看看是否有帮助吗?