Что не так с NPM-библиотекой?

Очень странная проблема.

Есть библиотека компонентов (Angular, TypeScript), залита и доступна на NPM. После последнего апдейта и публикации библиотеки на NPM (очень минорный апдейт, по сути две строчки внутри компонента которые никакой погоды не делают) перестала работать.

Обновляю (просто на локальном проекте, npm install ), запускаю, выдает в консоли:
node_modules/<lib name>/dist/button/button.d.ts(2,47): error TS2307: Cannot find module '../core'.

И таких нескольно аналогичных ошибок. Смотрю, как же оно не находит модуль-то. Уже все обсмотрел, захожу в папку с либой, а там тупо не хватает папки "core", и, естественно, модуль не обнаруживается и ничего не работает. Т.е., в исходниках она есть и все работает -> публикую на NPM -> устанавливаю на другом проекте — пропадает папка "core".

Думаю, может во время компиляции TypeScript -> JavaScript (это делается перед заливом на NPM) что-то не так? Просмотрел — в скомпиленной версии директория "core" присутствует и все работает. Поигрался с настройками компиляции, выбирал разные "module code generation" (commonJS/etc) — все так же.

Думаю, может директория "core" попала в игнор? Ни в .npmignore, ни в .gitignore (хотя гит тут не при чем) ничего подобного нет.

NPM обновлял, не помогло.

Гугление ничего не находит.
  • Вопрос задан
  • 355 просмотров
Решения вопроса 1
@Desire2304 Автор вопроса
Короче решил проблему. В package.json добавил поле files:
"files": [
    "dist/"
  ]

В dist у меня находится скомпиленная версия библиотеки, т.е. директории button, core (корорая пропадала после npm install), и другие. Т.е. этим самым мы сообщаем npm что в данном package хотим принудительно включить dist/ со всем ее содержимым. Почему core/ пропадала — так и не понял. Видать у npm есть какой-то аналог tree-shaker, о котором я не знаю.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
qmax
@qmax
программер
Angular глубоко под капотом использует webpack, который очень любит вычислять зависимости и оптимизировать неиспользуемые модули.
Скорее всего, ему не удалось установить зависимость между button и core.

Попробуйте указать там полный путь от корня проекта вместо `..`
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы