Версии `@ babel / runtime` и` @ babel / plugin-transform-runtime` - PullRequest
0 голосов
/ 05 января 2019

Должны ли @babel/runtime и @babel/plugin-transform-runtime быть в одной и той же версии (например, оба 7.2.0 точно)? Или я могу (как автор библиотеки) указать @babel/runtime зависимость как ^7.0.0, имея самую последнюю @babel/plugin-transform-runtime?

Я знаю, что во время бета-версий Babel 7 в beta.56 произошли серьезные изменения (см. https://stackoverflow.com/a/51686837/2148762),, но я полагаю, что с текущей стабильной версией это больше не должно происходить)

Причина, по которой я спрашиваю это, заключается в том, что в идеале я бы хотел, чтобы помощники из @babel/runtime были разделены между различными пакетами, и для меня оставление диапазона версий открытым кажется хорошей идеей. Но в то же время я не уверен, насколько низко мне идти (^7.0.0 или ^7.2.0), и есть ли неявный контракт между @babel/runtime и @babel/plugin-transform-runtime в отношении номеров версий.

1 Ответ

0 голосов
/ 07 января 2019

По умолчанию, @babel/plugin-transform-runtime разрешено выводить только ссылки на @babel/runtime, которые работают на ^7.0.0, потому что он не знает, какую версию вы хотели бы использовать в противном случае, и выполнение каких-либо других действий может вызвать множество проблем. пользователи. Это означает, что то, что вы хотите сделать, безопасно. Недостатком этого является то, что, если мы добавим новых помощников в будущем, ваш код не сможет использовать их версию @babel/runtime (поскольку вы все еще можете использовать версию @babel/runtime, в которой их нет). .

Пользователи могут указать version в аргументах преобразования, если вы хотите специально использовать помощников, которые могли быть добавлены в Babel с 7.0.0, например,

{
  "plugins": [
    ["@babel/plugin-transform-runtime", { version: "^7.2.0" }],
  ]
}

потребует от вас "@babel/runtime": "^7.2.0" в вашем package.json.

Например, поскольку поддержка более нового предложения декораторов не предоставлялась до Babel 7.1.5, если вы используете декораторы transform-runtime и не legacy, помощник декораторов будет по-прежнему вставляться в каждый файл, в котором вы используете декораторы, вместо того, чтобы импортировать их из @babel/runtime. Чтобы получить общего помощника, вам нужно указать version: "^7.1.5" в ваших опциях для transform-runtime.

Могу ли я (как автор библиотеки) указать зависимость @ babel / runtime как ^ 7.0.0, имея самую последнюю версию @ babel / plugin-transform-runtime?

Да, это безопасно.

Полагаю, этого не должно быть в текущей стабильной версии?

Правильно, эта проблема была в том, что люди не принимали во внимание бета-версию.

...