当前位置: 首页 > news >正文

Babel配置的不完全指南

Babel 7.1.0 升级须知

弃用年份preset

不需要再去手动安装babel-preset-es2015或其他年份,安装@babel/preset-env即可,相当于使用了最新版本的javascript

弃用stage preset

不再使用stage-0等stage配置

@-的区别

这个其实是npm的相关知识,并不限于babel,安装babel的一些预设有两种方法,一种是直接安装至node_modules文件夹,作为一个单独的npm包:

cnpm install babel-preset-env --save

另一种是安装scoped package?

cnpm install @babel/preset-env --save

两种方法都没有错,但是要注意路径问题,参考创建preset一节

Presets 预设

相当于一个插件集通过提供一系列预设实现转译功能。常用的有:

  • @babel/preset-react:用来编译JSX语法
  • @babel/preset-env:一个智能的语法环境预设,可以无需详细配置语法转换(如取代了stage-0

创建preset

选取在babelrc为例,语法如下:

{
    "presets":["@babel/preset-env"]
}

如果你没有采用scoped-package模式,那么你的写法应该是

{
    "presets":["babel-preset-env"]
}

也可以简写为

{
    "presets":["env"]
}

Plugins

插件的运行是在presets之前的,作为一个初级用户目前还没用到插件,基本上使用presets傻瓜式地提供插件集就足够了。详细请戳:Plugins | Babel中文网?

.babelrc文件编写

有多种方式可以配置babel,最方便的是创建一个.babelrc文件,官方说这个文件可以放在任何位置,babel-loader会去递归路径寻找,然而事实上我试了一次好像不行,当然这有可能是我没有处理好。总之,建议放在根目录。

然后你需要安装@babel/core确保所有转译采用你的配置文件进行

实例

一个react项目——

  • package.json文件,也就是你大概需要安装的:
{
  ...
    "dependencies": {
    "@babel/core": "^7.1.2",
    "@babel/preset-env": "^7.1.0",
    "@babel/preset-react": "^7.0.0",
    "babel-loader": "^8.0.4",
    ...
    }
    ...
}
  • .babelrc文件很简单:
{
  "presets": ["@babel/preset-env","@babel/preset-react"]
}
  • webpack.config.js文件:
{
...
module: {
        rules: [
            {
                test: /\.js$/,
                exclude: path.resolve(__dirname,'..','node_modules'),
                use: {
                    loader: "babel-loader",
                }
            },
            ...]
        }
        ...
}

相关文章:

  • IP数据报
  • 过了技术面却在HR面被刷?必备40问!从容应对HR,斩获N多大厂offer!
  • 如何解决 Django 前后端分离开发的跨域问题
  • JSP学习-02隐式对象
  • R1 学习记录
  • 167. Two Sum II - Input array is sorted
  • 想用Unity3D引擎技术赚点钱的看过来
  • python3爬取墨迹天气并发送给微信好友,附源码
  • 晒一晒老司机写的“超融合私有云”解决方案
  • 4种删除Word空白页的小技巧,都是你需要用到的!
  • ASP.NET Core 2.2.0-preview3 发布
  • LaTeX-用polynom宏包排版多项式的除法
  • Java中JNI的使用(上)
  • 番外篇——什么叫会工作
  • Python3.6使用tesseract-ocr的正确方法
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • Java 网络编程(2):UDP 的使用
  • JS基础之数据类型、对象、原型、原型链、继承
  • linux安装openssl、swoole等扩展的具体步骤
  • Promise初体验
  • SQLServer之创建数据库快照
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 关于extract.autodesk.io的一些说明
  • 讲清楚之javascript作用域
  • 如何编写一个可升级的智能合约
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • 如何用纯 CSS 创作一个货车 loader
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • #define与typedef区别
  • #前后端分离# 头条发布系统
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (007)XHTML文档之标题——h1~h6
  • (23)Linux的软硬连接
  • (33)STM32——485实验笔记
  • (function(){})()的分步解析
  • (poj1.2.1)1970(筛选法模拟)
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (九)信息融合方式简介
  • (六)c52学习之旅-独立按键
  • (六)Hibernate的二级缓存
  • (五)Python 垃圾回收机制
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转)ORM
  • (转)socket Aio demo
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .bat批处理(六):替换字符串中匹配的子串
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET 读取 JSON格式的数据
  • .NET 中使用 Mutex 进行跨越进程边界的同步