Angular 2, как загружать модули узлов сторонних поставщиков с дополнительными зависимостями

Загрузка модуля с одним узлом в Angular 2 и 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/**'
    ]
  });
};

И зарегистрировал модуль узла в 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 не загружаются. Как загрузить подзависимости с помощью system.js в проекте с начальной загрузкой angular-cli?


person Manuel    schedule 27.06.2016    source источник
comment
Можно переместить его внутрь src/app/node_modules/ и импортировать, как и другие файлы TS.   -  person codef0rmer    schedule 27.06.2016
comment
не кажется мне правильным способом   -  person Manuel    schedule 27.06.2016


Ответы (2)


Итак, вы столкнулись с действительно неприятной проблемой с 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-ship

Вы можете проверить system.config.ts и angular-cli-build.js там, чтобы увидеть, как включить зависимости от angular2-apollo, apollo-client, lodash (и все нужные зависимости от него), redux и многие другие (слишком много....)

person Urigo    schedule 11.07.2016
comment
Аполлон-корабль великолепен! Спасибо чувак! :) И я надеюсь, что в ближайшем будущем Angular-CLI будет поддерживать веб-пакет ???? - person Aral Roca; 12.07.2016
comment
Для тех, кто не может заставить это работать, попробуйте решение здесь. - person JesterXL; 15.07.2016
comment
@Urigo, была ли недавно добавлена ​​​​сборка для интеграции в angular2? В ближайшие дни проверю, а то сейчас очень занят. Может быть, вы хотели бы обновить свой корабль-аполлон и ответ здесь, загрузив версию сборки? - person Manuel; 26.07.2016

Я думаю, что вы делаете неправильно в system.config.ts. Конфигурация пользовательского пакета должна находиться в верхней части этого файла.

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

};

Посмотрите, поможет ли это вам?

person pd farhad    schedule 30.06.2016
comment
Поняла это позже на двух. Однако это не имеет никакого значения, поскольку ни один из них не может загрузить node_module с зависимостями, вероятно: - ( - person Manuel; 30.06.2016
comment
Я также интегрировал angular2-apollo в свой проект. С моей стороны проблем не было - person pd farhad; 12.07.2016
comment
Вы включили его в метеор или любое отдельное приложение? Я думаю, что сборка аполлона была недавно добавлена ​​по моему запросу в стек аполлона. Спасибо за показ. Проверю в ближайшие дни - person Manuel; 26.07.2016