配置 Babel(进阶)
大多数人使用 Babel 的内建预设就足够了,不过 Babel 提供了更多更细粒度的能力。
手动指定插件
Babel 预设就是一些预先配置好的插件的集合,如果你想要做一些不一样的事情你会手动去设定插件,这和使用预设几乎完全相同。
首先安装插件:
$ npm install --save-dev babel-plugin-transform-es2015-classes
然后往 .babelrc 文件添加 plugins 字段。.
{
+ "plugins": [+ "transform-es2015-classes"+ ]
}
这能让你对正在使用的转换器进行更细致的控制。
完整的官方插件列表请见 Babel 插件页面。.
同时也别忘了看看由社区构建的其他插件。 如果你想学习如何编写自己的插件可以阅读 Babel 插件手册。.
插件选项
很多插件也有选项用于配置他们自身的行为。 例如,很多转换器都有“宽松”模式,通过放弃一些标准中的行为来生成更简化且性能更好的代码。
要为插件添加选项,只需要做出以下更改:
{
"plugins": [- "transform-es2015-classes"+ ["transform-es2015-classes", { "loose": true }]
]
}
基于环境自定义 Babel
巴贝尔插件解决许多不同的问题。 其中大多数是开发工具,可以帮助你调试代码或是与工具集成。 也有大量的插件用于在生产环境中优化你的代码。
因此,想要基于环境来配置 Babel 是很常见的。你可以轻松的使用 .babelrc 文件来达成目的。
{
"presets": ["es2015"],
"plugins": [],
+ "env": {
+ "development": {
+ "plugins": [...]
+ },
+ "production": {
+ "plugins": [...]
+ }
}
}
Babel 将根据当前环境来开启 env 下的配置。
当前环境可以使用 process.env.BABEL_ENV 来获得。 如果 BABEL_ENV 不可用,将会替换成 NODE_ENV,并且如果后者也没有设置,那么缺省值是"development"。.
Unix
$ BABEL_ENV=production [COMMAND]
$ NODE_ENV=production [COMMAND]
Windows
$ SET BABEL_ENV=production
$ [COMMAND]
注意:[COMMAND] 指的是任意一个用来运行 Babel 的命令(如:babel,babel-node,或是 node,如果你使用了 register 钩子的话)。
提示:如果你想要让命令能够跨 unix 和 windows 平台运行的话,可以使用 cross-env。.
Babel 和其他工具
一旦你掌握的窍门,安装 Babel 还是十分简明的,不过和其他工具搭配在一起就会变得困难多了。 不过我们一直在与其他项目密切合作以确保这种体验尽可能简单。
静态分析工具
新标准为语言带来了许多新的语法,静态分析工具正在将此利用起来。
语法检查(Linting)
ESLint 是最流行的语法检查工具之一,因此我们维护了一个官方的 babel-eslint 整合软件包。
首先安装 eslint 和 babel-eslint。.
$ npm install --save-dev eslint babel-eslint
注意:兼容 Babel 6 的 babel-eslint 目前正处于预发行版本。 安装最新的 5.0 beta 版来兼容 Babel 6。
然后创建或使用项目现有的 .eslintrc 文件并设置 parser 为 babel-eslint。.
{
+ "parser": "babel-eslint",
"rules": {
...
}
}
现在添加一个 lint 任务到 npm 的 package.json 脚本中:
{
"name": "my-module",
"scripts": {+ "lint": "eslint my-files.js"
},
"devDependencies": {
"babel-eslint": "...",
"eslint": "..."
}
}
接着只需要运行这个任务就一切就绪了。
$ npm run lint
详细信息请咨询 babel-eslint 或者 eslint 的文档。
代码风格
JSCS 是一个极受欢迎的工具,在语法检查的基础上更进一步检查代码自身的风格。 Babel 和 JSCS 项目的核心维护者之一(@hzoo)维护着 JSCS 的官方集成。
更妙的是,JSCS 自己通过 --esnext 选项实现了这种集成,于是和 Babel 的集成就简化成了直接在命令行运行:
$ jscs . --esnext
或者在 .jscsrc 文件里添加 esnext 选项。
{
"preset": "airbnb",+ "esnext": true
}
详细信息请咨询 babel-jscs 或是 jscs 的文档。
文档
使用 Babel,ES2015,还有 Flow 你可以对你的代码进行大量的推断。使用 documentation.js 可以非常简便地生成详细的 API 文档。
Documentation.js 使用 Babel 来支持所有最新的语法,包括用于在你的代码中声明类型所用的 Flow 注解在内,
框架
所有主流的 JavaScript 框架都正在努力调整他们的 APIs 向这门语言的未来看齐。有鉴于此,配套工具方面已经做出了大量的工作。
除了使用 Babel 以外,框架更有条件去扩展 Babel 来帮助他们提升用户体验。
React.
React的API发生了很大改变以适应ES6的类语法,现在React依赖Babel来编译他的JSX语法,弃用了有来的自定义工具。
转载请注明: Vue教程中文网 - 打造国内领先的vue学习网站-vue视频,vue教程,vue学习,vue培训 » Babel从入门到进阶(三)