我正在尝试创建npm模块,我在官方babeljs网站上找不到单一指令.你如何使用babel-runtime包?从名字我猜它应该放在package.json的"依赖"部分,对吧?
绝对没有信息:https://github.com/babel/babel/tree/master/packages/babel-runtime
在这里找到一个例子:https://strongloop.com/strongblog/javascript-babel-future/但是当我运行"babel -h"时它没有列出--optional作为有效参数.
在编译代码时,Babel实际上会注入帮助程序来模拟您所针对的ES版本不支持的功能.
例如:class MyClass {}
利用内联帮助程序_classCallCheck
,也可以通过它访问require('babel-runtime/helpers/classCallCheck')
.
默认情况下,这些帮助程序不在编译单元(文件)之间共享.Babel团队虽然将它们分解在一个地方可能会很有趣,但是当它们被多次使用时可以节省空间.
这个问题已经通过创建babel-plugin-transform-runtime
插件来解决,该插件遍历AST并根据babel-runtime
模块的适当要求替换帮助程序注入.这样,帮助程序在代码库中共享,避免了重复.
假设你有一个正在运行的Babel环境:
安装babel-plugin-transform-runtime
(作为a devDependency
),它会转换您的代码以删除帮助程序并使用其中的帮助程序babel-runtime
.您需要将其添加到plugins
Babel配置的数组中
安装babel-runtime
(作为a dependency
),这是实际的库babel-plugin-transform-runtime
假定您将拥有dependencies
它,它将在运行时由您的转换代码使用.您无需在代码中的任何位置要求它.
npm run build
将lib
文件夹编译成dist
npm start
启动dist
文件夹(取决于babel-runtime
)
的package.json
{ "scripts": { "build": "babel lib --out-dir=dist", "start": "node dist" }, "dependencies": { "babel-runtime": "^6.9.2" }, "devDependencies": { "babel-cli": "^6.10.1", "babel-plugin-transform-runtime": "^6.9.0" }, "babel": { "plugins": [ "transform-runtime" ] } }
运行时是可选的,但与Babel 6中的其他所有内容一样,它主要通过添加插件来启用.在这种情况下,您需要http://babeljs.io/docs/plugins/transform-runtime/
plugins: ["transform-runtime"]
babel-runtime
是一个包含polyfill和Babel可以引用的许多其他东西的包.你可以在你的应用程序中安装它npm install babel-runtime
transform-runtime
是一个Babel插件,用于处理源代码和注入import foo from "babel-runtime"
语句,以便babel-runtime
实际使用.你也可以安装它npm install babel-plugin-transform-runtime
.