Анонс Meteor 2.3.1: Node 14, удаление устаревших API, улучшенная HMR и многое другое

Meteor 2.3 и 2.3.1 содержат множество долгожданных обновлений и улучшений. У него также есть небольшая диета с удалением давно устаревшего кода в пакетах, что позволяет нам больше сосредоточиться на будущем.

Обновление узла 14

Первым серьезным изменением в Meteor 2.3 является обновление версии Node до Node 14.17.3 с 12.22.1. Это переводит Meteor на текущую LTS-версию Node с обновлениями в V8. Прочтите статью о выпуске Node 14 для получения дополнительной информации. Некоторые из улучшений, которые присутствуют в Node 14, такие как новые функции JavaScript (например, необязательная цепочка), уже доступны в Meteor.

Как и при любом обновлении узла, вам потребуется просмотреть свои приложения, чтобы убедиться, что ваши зависимости совместимы с новой версией. Вам следует удалить папку node_modules и установить зависимости через meteor npm install .

Как и в случае любого обновления узла, также были обновлены meteor-tool зависимости, в частности:

  • npm обновлен до версии 6.14.13 для соответствия с обновлением узла
  • fibers v5.0.0
  • promise v8.1.0
  • node-gyp v8.0.0
  • @babel/runtime v7.14.0
  • request v2.88.2
  • tar v2.2.2
  • sqlite3 v5.0.2
  • moment v2.29.1
  • underscore v1.13.1
  • optimism v0.16.1
  • @wry/context v0.6.0

Улучшенная перезарядка и HMR

Zodern усердно работал над постепенными улучшениями и исправлениями для HMR, в первую очередь улучшая отслеживание того, какие файлы используются, создавая плагины, чтобы знать, когда следует выполнить полную перестройку, более быструю перестройку только для клиента или полностью пропустить перестройку после файла. модифицирован. Это должно работать с любым файлом в любом каталоге, как с файлами в приложении, так и с файлами в пакетах.

Наиболее заметное улучшение - изменение файла, используемого только на клиенте. Meteor восстановит только клиент, даже если файл не находится внутри imports или папки client. Теперь отпала необходимость в папке импорта, чтобы изменения в пользовательском интерфейсе не перезагружали сервер. Это была ошибка, появившаяся после добавления параметра метеора mainModule в package.json, и теперь она исправлена!

Что касается экспериментов, мы тестируем сокращение времени, затрачиваемого сервером на (повторный) запуск разработки, путем добавления кеша для Reify. Эта оптимизация включена по умолчанию в разработке, если вы хотите, чтобы она работала в производственной среде, вы можете включить ее, установив переменную среды METEOR_REIFY_CACHE_DIR.

Пакеты аккаунтов критичные изменения

Пакеты учетных записей получили много улучшений в этом цикле выпуска. В то время как большинство из них являются незначительными улучшениями или изменениями, некоторые из них требуют повышения основной версии некоторых пакетов. Это изменение основной версии потребует действий от всех сопровождающих пакетов, которые зависят от пакетов accounts-base, accounts-password и oauth, чтобы включить новый диапазон, например: api.versionsFrom([‘1.12’, ‘2.3’]) или api.use(‘[email protected] || 2.0.0’).

Это связано с удалением старых API-интерфейсов, как описано ниже, нарушением рабочего процесса регистрации и удалением пароля в стиле SRP, как описано ниже.

Рабочий процесс регистрации учетной записи был отделен от рабочего процесса сброса пароля (записи токенов регистрации теперь хранятся в отдельном поле базы данных services.password.enroll вместо services.password.reset). Если вы выполняли какие-либо операции, связанные с процессом регистрации, вам, скорее всего, потребуется изменить запросы к БД.

Наконец, старые механизмы паролей в стиле SRP, существовавшие до Meteor 1.0, теперь полностью удалены. Другие вызовы API до Meteor 1.0, которые были объявлены устаревшими (и теперь по большей части просто указывают на их текущие эквиваленты), в этом выпуске завершились. См. Подробности в истории.

Удаление устаревших API в пакетах

С выпуском Meteor 2.0 удаление старых устаревших API-интерфейсов, выпущенных до Meteor 1.0, было лишь вопросом времени. В этом выпуске делается первый шаг, направленный на удаление устаревших API-интерфейсов для пакетов. Начиная с самого API пакетов, старые вызовы стиля подчеркивания были удалены. Таким образом, древние вызовы, такие как api.add_files, больше не будут работать, и вам следует использовать вариант случая верблюда (api.add_files = ›api.addFiles).

Во всех основных пакетах, любые устаревшие конечные точки API, выпущенные до Meteor 1.0, были удалены. См. Подробную информацию в истории. Это должно коснуться только пакетов и приложений, которые были с нами с самого начала и не смогли перейти на новые вызовы API.

Флаг устаревшего для пакетов

Среди всех этих удалений у нас есть новое дополнение для жизненного цикла пакета. В жизненном цикле пакета может наступить время завершить разработку по разным причинам или он будет заменен. В любом случае Meteor теперь позволяет вам легко уведомлять пользователей пакета, установив флаг устаревания в значение true: deprecated: true в описании пакета. Кроме того, вы можете заменить его строкой, которая сообщает пользователям, где найти замену или что делать.

Уведомление и инструкции будут отображаться в консоли при добавлении или обновлении устаревшего пакета.

Если вы хотите увидеть пример использования, ознакомьтесь с устаревшими пакетами в Meteor.

Машинопись 4.3.2

Для любителей строго типизированного JavaScript мы обновляем Typescript до 4.3.2. Ознакомьтесь с необходимыми вкусностями:

Ответы WebApp

Webapp будет надлежащим образом реагировать на неподдерживаемые запросы вместо отправки содержимого, включая обработку новых HTTP-глаголов, таких как OPTIONS, для улучшения соответствия следующим образом:

GET

  • Ответить запрошенным ресурсом; статический актив, шаблон и т. д.

HEAD

  • Вернуть заголовки, идентичные запросу GET
  • Не отправлять контент (в любом случае он игнорируется пользовательскими агентами)

OPTIONS

  • Ответить 200
  • Отправить Разрешить заголовок со списком допустимых методов запроса
  • Не отправлять контент

CONNECT, DELETE, PATCH, POST, PUT, TRACE и т. Д.

  • Ответьте с помощью метода 405, который запрещен
  • Отправить Разрешить заголовок со списком приемлемых методов запроса
  • Не отправлять контент

DDP_DEFAULT_CONNECTION_URL поведение изменилось

Поведение недокументированной переменной среды DDP_DEFAULT_CONNECTION_URL изменилось. Установка DDP_DEFAULT_CONNECTION_URL при запуске сервера (разработка: meteor run или производство: node main.js) устанавливает значение сервера DDP по умолчанию для meteor. Но для приложений Cordova это не сработало. Теперь вы можете определить значение сервера DDP по умолчанию для приложения Cordova, установив DDP_DEFAULT_CONNECTION_URL при сборке.

Флаг новых платформ

В команду meteor build добавлен новый флаг --platforms, указывающий платформу, для которой вы хотите построить. meteor build . —-platforms=android. Это полезно, например, когда вы не используете MacOS и хотите создать приложение только для Android. Или вы можете использовать это, чтобы сэкономить время на CI, не создавая постоянно все платформы.

Новый вариант развертывания

--build-only - это новый вариант развертывания. Это полезно, если вы хотите сначала построить, а после некоторых проверок продолжить загрузку и развертывание. Подробнее об этом в документации по Cloud.

[email protected]

Благодаря Яну Кюстеру пакет http был полностью переписан для внутреннего использования fetch. Это сделано для того, чтобы помочь вам перейти к извлечению. Это позволит вам использовать текущий http API, к которому вы привыкли, и продолжите работать. Это устранит проблемы, связанные с прекращением поддержки http. Хотя это конец пакета, и теперь он будет полностью устаревшим.

Новый формат по умолчанию для сборок Android

В версии 2.3.1 был изменен вывод по умолчанию для приложений Android Cordova. Новый формат по умолчанию - .aab, после объявления Google о том, что с августа новые приложения должны будут использовать этот новый формат.

Если вы все еще хотите использовать старый формат apk, используйте следующий флаг в команде сборки: --packageType=apk

И многое другое!

И это только начало, есть много других мелких исправлений и улучшений. Пожалуйста, просмотрите список изменений для Meteor 2.3, чтобы увидеть подробный список всех изменений.

Вы можете обновиться до Meteor 2.3.2 сегодня, как обычно, с

meteor update --release 2.3.2

У нас были проблемы с Windows и пакетом webapp в финальной версии Meteor 2.3, поэтому мы рекомендуем выполнить обновление непосредственно до 2.3.2.

Если вы хотите участвовать в бета-версиях Meteor, оставляя отзывы и тестируя свои приложения, зарегистрируйтесь в нашем Сообществе Slack и присоединитесь к нашему каналу #beta-feedback.

ОБНОВЛЕНИЕ 13.07.2021 - Мы обнаружили проблему при запуске проектов Android с новым форматом пакета. Это было исправлено в 2.3.2, поэтому мы рекомендуем сразу перейти к этой версии.