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-apollo
, apollo-client
, lodash
(以及所有需要的依赖关系), 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' }, };
看看是否有帮助吗?