wabpack babel

2017-12-06  本文已影响0人  LingJJ1100的笔记

babel的编译流程

基本配置:

组件名称 翻译 作用 为什么需要
babel-loader 加载器 1.进行psrse、generate步骤
2.代码的code于AST之间的词法解析
babel-core 核心 提供编译基础的API node API的babel 以被移出
babel-preset-env 预设环境 1.提供具体的编译规则
2.进行transform步骤具体编译
使其能在指定环境下正常运行
module: {
  rules: [
    {
      test: /\.js$/,
      exclude: /(node_modules|bower_components)/, // 忽略目录 提升性能
      use: {
        loader: 'babel-loader',
        options: {
          presets: ['env'] // 使用babel-preset-nev 的预设环境
        } } } ] } // 出于篇幅考虑而折叠  --源于官网

babel-preset-env

配置语法:"presets": ["nev",({option})]

参数 翻译 作用
targets 指定目标环境的对象 使用对象的形式设置env参数
targets.browsers 设置目标浏览器的运行环境 通过browserslist格式设置[1]
targets.node 目标node运行环境 具体node版本 | "current" | true
targets.uglify 压缩 默认值为true
spec 规范 使用更规范的编译规则,可能减慢编译速度
loose 宽松 开启宽松模式,配合loader使用
modules 模块机制 使用何种模块机制
默认:commen.js可选:amd,umd,systemjs
debug 开启调试模式
include 白名单 一定进行编译
exclude 黑名单 一定不进行编译
useBuiltIns[2] 是否对babel-polyfill进行分解,只引入所需部分

[1]browserslist 介绍
[2]preset-env包含runtime模块,runtime包含polyfill模块


stage-(0|1|2|3|4):ES7不同阶段语法提案的转码规则
env:根据指定环境要求进行编译

babel常见组件 科普

组件名称 翻译 作用 为什么
babel-cli 命令行 通过命令行操作编译文件 不依赖配置文件,方便移植,使用灵活
babel-runtime 执行环境 ps:内置了polyfill
避免每个模块重复出现辅助代码
babel-plugin-transform-runtime 静态编译??
babel-polyfill 软垫片 兼容新的JS API babel只转换新的js语法,而不转换新的API
例如:iterator,Generator,Set,Maps,Proxy,
Reflect,Symbol,Promise等...
其他组件以后再更新

温馨提示:只是个人理解,欢迎纠正

上一篇下一篇

猜你喜欢

热点阅读