详解create-react-app 2.0版本如何启用装饰器语法


Posted in Javascript onOctober 23, 2018

create-react-app(简称cra)已经更新之2.0.3版本, babel也更新至7.x版本, JavaScript装饰器语法虽然还不是标准, 但是借助于babel, 也能在项目里愉快的玩耍.

cra2.0时代如何启用装饰器语法呢? 我们依旧采用的是react-app-rewired, 通过劫持webpack cofig对象, 达到修改的目的.

yarn add react-app-rewired

修改package.json

"scripts": {
  "start": "react-app-rewired start",
  "build": "react-app-rewired build",
  "test": "react-app-rewired test"
 }

安装装饰器语法所需的babel插件, 也可以顺带升级babel-core

yarn add @babel/plugin-proposal-decorators metro-react-native-babel-preset -D

在项目根目录下创建.babelrc, config-overrides.js文件

// .babelrc
{
 "presets": ["module:metro-react-native-babel-preset"],
 "plugins": [
  [
   "@babel/plugin-proposal-decorators",
   {
    "legacy": true
   }
  ]
 ]
}

// config-overrides
const { getBabelLoader } = require('react-app-rewired');

const path = require('path');

module.exports = function override(config, env) {
 const babelLoader = getBabelLoader(config.module.rules);
 const pwd = path.resolve();
 babelLoader.include = [path.normalize(`${pwd}/src`)];
 // use babelrc
 babelLoader.options.babelrc = true;
 
 return config;
};

原理就是劫持了config对象, 对其babel规则进行简单的修改.

附上完整的package.json

{
 "name": "my-react-project",
 "version": "0.1.0",
 "private": true,
 "dependencies": {
  "react": "^16.5.2",
  "react-app-rewired": "^1.6.2",
  "react-dom": "^16.5.2",
  "react-scripts": "2.0.5"
 },
 "scripts": {
  "start": "react-app-rewired start",
  "build": "react-app-rewired build",
  "test": "react-app-rewired test"
 },
 "eslintConfig": {
  "extends": "react-app"
 },
 "browserslist": [
  ">0.2%",
  "not dead",
  "not ie <= 11",
  "not op_mini all"
 ],
 "devDependencies": {
  "@babel/plugin-proposal-decorators": "^7.1.2",
  "metro-react-native-babel-preset": "^0.48.1",
  "webpack-bundle-analyzer": "^3.0.3"
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 简单抽屉效果的实现代码
Mar 09 Javascript
js 创建书签小工具之理论
Feb 25 Javascript
重载toString实现JS HashMap分析
Mar 13 Javascript
在myeclipse中如何加入jquery代码提示功能
Jun 03 Javascript
javascript实现回车键提交表单方法总结
Jan 10 Javascript
vue获取DOM元素并设置属性的两种实现方法
Sep 30 Javascript
Js面试算法详解
Apr 08 Javascript
Swiper 4.x 使用方法(移动端网站的内容触摸滑动)
May 17 Javascript
JavaScript设计模式之享元模式实例详解
Jan 17 Javascript
基于js实现逐步显示文字输出代码实例
Apr 02 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
Aug 13 Javascript
微信小程序 接入腾讯地图的两种写法
Jan 12 Javascript
彻底弄懂 JavaScript 执行机制
Oct 23 #Javascript
深入理解JavaScript 中的执行上下文和执行栈
Oct 23 #Javascript
浅谈JavaScript 代码整洁之道
Oct 23 #Javascript
使用jquery Ajax实现上传附件功能
Oct 23 #jQuery
详解如何构建Promise队列实现异步函数顺序执行
Oct 23 #Javascript
jquery实现动态添加附件功能
Oct 23 #jQuery
Vue创建头部组件示例代码详解
Oct 23 #Javascript
You might like
PHP仿博客园 个人博客(2) 数据库增添改删
2013/07/05 PHP
PHP时间戳 strtotime()使用方法和技巧
2013/10/29 PHP
javascript下function声明一些小结
2007/12/28 Javascript
Firefox outerHTML实现代码
2009/06/04 Javascript
类似CSDN图片切换效果脚本
2009/09/17 Javascript
javaScript 关闭浏览器 (不弹出提示框)
2010/01/31 Javascript
Javascript string 扩展库代码
2010/04/09 Javascript
让ie运行js时提示允许阻止内容运行的解决方法
2010/10/24 Javascript
IE中getElementsByName()对有些元素无效的解决方案
2014/09/28 Javascript
Node.js中的流(Stream)介绍
2015/03/30 Javascript
JavaScript实现身份证验证代码
2016/02/17 Javascript
AngularJS实现分页显示数据库信息
2016/07/01 Javascript
纯前端JavaScript实现Excel IO案例分享
2016/08/26 Javascript
老生常谈js中的MVC
2017/07/25 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
vue组件间通信子与父详解(二)
2017/11/07 Javascript
关于jquery layui弹出层的使用方法
2018/04/21 jQuery
Vue插值、表达式、分隔符、指令知识小结
2018/10/12 Javascript
JS数组求和的常用方法实例小结
2019/01/07 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
[03:22]DAC最前线(第二期)—DOTA2亚洲邀请赛主赛场周边及线路探访
2015/01/24 DOTA
详解设计模式中的工厂方法模式在Python程序中的运用
2016/03/02 Python
详解python如何调用C/C++底层库与互相传值
2016/08/10 Python
wxPython的安装与使用教程
2018/08/31 Python
详解如何用django实现redirect的几种方法总结
2018/11/22 Python
详解Python爬虫爬取博客园问题列表所有的问题
2021/01/18 Python
CSS3 实现footer 固定在底部(无论页面多高始终在底部)
2019/10/15 HTML / CSS
data:image data url 文件转为Blob上传后端的方法
2019/07/16 HTML / CSS
Napapijri西班牙在线商店:夹克、外套、运动衫等
2020/11/05 全球购物
电气自动化大学生求职信
2013/10/16 职场文书
党员实事承诺书
2014/03/26 职场文书
离职保密承诺书
2014/05/28 职场文书
项目委托协议书(最新)
2014/09/13 职场文书
留学文书中的个人陈述,应该注意哪些问题?
2019/08/23 职场文书