Как добавить пакет SPFX размером более 100 МБ?

Я разрабатываю приложение SPFX (SharePoint Framework) для SharePoint в Интернете с помощью React JS. Все было хорошо, пока размер моего приложения не превысил 100 МБ. Теперь, хотя я могу загрузить приложение на свой сайт каталога приложений, я не могу обновить приложение в моем семействе сайтов. При попытке я получаю следующую ошибку:

поток пакета превышает максимально допустимую длину 104857600 байт

Я использую команды Gulp Bundle -ship и Gulp package-solution --ship для упаковки своего решения. Есть ли более эффективный способ упаковки для производства? Может быть, подход, при котором файл пакета не становится таким большим?


person Surya    schedule 05.11.2018    source источник
comment
Что вы добавили в это приложение? Размер 100 МБ - это безумие!   -  person Szab    schedule 07.11.2018


Ответы (1)


После нескольких часов проб и испытаний было найдено решение, устраняющее проблему. Ответ на исходный вопрос до сих пор неизвестен, т.е. я не понял, как добавить приложение размером более 100 МБ. Но я нашел решение, почему приложение было больше 100 МБ. Разделяю его, чтобы он мог помочь другим, вроде меня, начинающим разработку React SPFX.

Проблема

В моем проекте абсолютно нулевые медиафайлы (ни изображений, ни видео). Поэтому было странно, что размер пакета превышал 100 МБ. Хотя у меня было более 25 компонентов и 5 веб-частей. Обычно я запускаю свою рабочую среду (используя Gulp Serve) и продолжаю вносить изменения, пока она не будет готова к сборке. Затем я останавливаю Gulp Serve и запускаю свои команды сборки (Gulp Bundle -ship & Gulp Package-Solution --Ship). Он увеличивает размер файла .sppkg с каждой сборкой. Это также добавляет болезненную задержку при загрузке и проверке приложения в магазине приложений (почти 10 минут в худшем случае). А затем, когда размер пакета превышает 100 МБ, вы больше не сможете обновлять его в своем семействе сайтов.

Решение

Я случайно наткнулся на "Gulp Clean" и решил попробовать. Я запускал его перед своими командами сборки и вуаля! Пакет, который всего несколько минут назад был 100 МБ, теперь стал 1,3 МБ (очевидно, поскольку все, что содержит мое решение, это файлы .ts, .tsx и .scss). Теперь обновление моего приложения в магазине приложений занимает меньше минуты.

Поэтому я создавал bat-файл для сборки своего пакета каждый раз, когда мне это нужно. Содержимое файла bat показано ниже:

call gulp clean
call gulp bundle -ship
call gulp package-solution --ship

Дополнительная справка

Я обнаружил, что этот пост от Вальдека Мастикарца слишком поздно. Хотя причины для использования "Clean" в его посте были другими, чем у меня, это сэкономило бы мне несколько часов, если бы я увидел это немного раньше.

Предупреждение

Я все еще детально изучаю Gulp Clean и не могу точно сказать, нет ли у него побочных эффектов.

person Surya    schedule 08.11.2018