`@babel/runtime` 和 `@babel/plugin-transform-runtime` 版本
Posted
技术标签:
【中文标题】`@babel/runtime` 和 `@babel/plugin-transform-runtime` 版本【英文标题】:`@babel/runtime` and `@babel/plugin-transform-runtime` versions 【发布时间】:2019-01-05 16:12:03 【问题描述】:@babel/runtime
和 @babel/plugin-transform-runtime
是否应该在同一个版本上(例如,两个 7.2.0
完全相同)?或者我可以(作为库作者)将@babel/runtime
依赖项指定为^7.0.0
,同时拥有最新的@babel/plugin-transform-runtime
?
我知道在 Babel 7 的 beta 版本期间,beta.56
(请参阅https://***.com/a/51686837/2148762)发生了重大变化,但我猜当前的稳定版本应该不再是这种情况?
我问这个的原因是我理想地希望来自@babel/runtime
的助手在不同的包之间共享,并且对我来说保持版本范围开放似乎是个好主意。但与此同时,我不确定我应该降到多低(^7.0.0
或^7.2.0
),以及@babel/runtime
和@babel/plugin-transform-runtime
之间是否存在关于版本号的隐含合同。
【问题讨论】:
【参考方案1】:默认情况下,@babel/plugin-transform-runtime
只允许输出对 @babel/runtime
的引用,这些引用在 ^7.0.0
上工作,因为它不知道您要使用什么版本,并且做任何其他事情都会导致很多问题用户。这意味着您想做的事情是安全的。这样做的缺点是,如果我们继续添加新的助手,您的代码将无法利用它们的 @babel/runtime
版本(因为您可能仍在使用没有它们的 @babel/runtime
版本.
如果您想专门使用自 7.0.0
以来可能已添加到 Babel 的帮助器,用户可以在转换的参数中指定 version
,例如
"plugins": [
["@babel/plugin-transform-runtime", version: "^7.2.0" ],
]
然后将要求您在 package.json
中包含 "@babel/runtime": "^7.2.0"
。
例如,由于直到 Babel 7.1.5 才支持更新的装饰器提案,如果您使用 transform-runtime
和非legacy
装饰器,装饰器助手仍将插入到您使用的每个文件中装饰器,而不是从 @babel/runtime
导入它。要获取共享助手,您需要在 transform-runtime
的选项中指定 version: "^7.1.5"
。
我能否(作为库作者)将 @babel/runtime 依赖项指定为 ^7.0.0,同时拥有最新的 @babel/plugin-transform-runtime?
是的,这是安全的。
我猜现在的稳定版本应该不再是这种情况了?
正确,这个问题是因为人们没有考虑到 beta 版本。
【讨论】:
以上是关于`@babel/runtime` 和 `@babel/plugin-transform-runtime` 版本的主要内容,如果未能解决你的问题,请参考以下文章
babel JS 文件无法解析“@babel/runtime/helpers/builtin/classCallCheck”
VueJS - 找不到模块:错误:无法解析'@babel/runtime/regenerator'
添加@babel/transform-runtime 插件时无法读取未定义的属性“Reactstrap”
React-native,monorepo:无法解析模块@babel/runtime/helpers/interopRequireDefault
Haste模块映射中不存在模块`@babel / runtime / helpers / interopRequireDefault`
Error: Cannot find module '@babel/runtime/core-js/object/keys'(npm start报错)