использовать модифицированный угловой модуль cdk в другом проекте локально

Я разветвил, клонировал и модифицировал репозиторий угловых материалов в соответствии со своими потребностями. Код в dev-приложении работает нормально.

Теперь я хочу использовать этот модуль, точнее DragDropmodule из @angular/cdk, в другом угловом приложении, над которым я работаю.

Поэтому я запустил gulp cdk:build-release и получил папку dist/releases/cdk, содержащую встроенные модули.

Как мне теперь использовать DragDropModule этого скомпилированного модуля в моем другом проекте? Я попробовал npm link. Это работает до некоторой степени, так как теперь я могу импортировать модуль,

import { DragDropModule } from 'material2c/dist/releases/cdk/drag-drop';

Однако попытка ng serve выдает кучу ошибок

ERROR in C:/Users/admin/Documents/material2/dist/releases/cdk/esm5/drag-drop.es5.js Module not found: Error: Can't resolve '@angular/cdk/bidi' in 'C:\Users\admin\Documents\material2\dist\releases\cdk\esm5' ERROR in C:/Users/admin/Documents/material2/dist/releases/cdk/esm5/drag-drop.es5.js Module not found: Error: Can't resolve '@angular/cdk/coercion' in 'C:\Users\admin\Documents\material2\dist\releases\cdk\esm5' ERROR in C:/Users/admin/Documents/material2/dist/releases/cdk/esm5/drag-drop.es5.js Module not found: Error: Can't resolve '@angular/cdk/platform' in 'C:\Users\admin\Documents\material2\dist\releases\cdk\esm5' ERROR in C:/Users/admin/Documents/material2/dist/releases/cdk/esm5/drag-drop.es5.js Module not found: Error: Can't resolve '@angular/cdk/scrolling' in 'C:\Users\admin\Documents\material2\dist\releases\cdk\esm5'

Любая помощь приветствуется :-)


person mad    schedule 29.12.2018    source источник
comment
не могли бы вы создать пример github/stackblitz для того же самого? Это поможет нам узнать, откуда именно возникла проблема. Чтение консольных журналов не дает полной картины   -  person Ankesh    schedule 29.12.2018


Ответы (1)


Импорт должен остаться прежним, если проект правильно связан. Например:

import { DragDropModule } from '@angular/cdk'

Это связано с тем, что npm link создает ссылку из связанного проекта на ./node_modules/@angular/cdk в целевом проекте.

Если вам нужно поделиться модулем, вам может быть интересно запустить npm pack в каталоге dist модуля, который должен вывести tar-архив, который вы затем можете установить npm в свой проект и легко поделиться с другими людьми.

person Michael    schedule 29.12.2018
comment
Привет Михаил, спасибо за ответ. Мне не повезло напрямую связать его с npm/yarn. При выполнении npm pack, поместив tgz в папку продукта и включив его как devDependency, это сработало. Ты знаешь почему? - person mad; 30.12.2018
comment
Попробуйте запустить npm link ../../path/to/dist/dir в каталоге проекта, на который вы пытаетесь связать - person Michael; 30.12.2018
comment
спасибо, хитрость заключалась в том, чтобы разрешить сохранение символических ссылок в файле angular.json. Описано здесь: stackoverflow.com/a/53123513/537865 - person mad; 30.12.2018