Анонс 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.0promise
v8.1.0node-gyp
v8.0.0@babel/runtime
v7.14.0request
v2.88.2tar
v2.2.2sqlite3
v5.0.2moment
v2.29.1underscore
v1.13.1optimism
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. Ознакомьтесь с необходимыми вкусностями:
- Отдельные типы записи в свойствах
override
и--noImplicitOverride
Флаг- Улучшения типа строки шаблона
- Элементы класса ECMAScript
#private
ConstructorParameters
Работы по абстрактным классам- Контекстное сужение для обобщений
- Проверки всегда-правдивых обещаний
static
Индексные подписи- Ленивые вычисления в
--incremental
и--watch
компиляциях - Завершенные операции импорта
Ответы 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, поэтому мы рекомендуем сразу перейти к этой версии.