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

Posted xanthedsf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详解create-react-app 2.0版本如何启用装饰器语法相关的知识,希望对你有一定的参考价值。

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

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

1
yarn add react-app-rewired

修改package.json

1
2
3
4
5
"scripts": {
  "start": "react-app-rewired start",
  "build": "react-app-rewired build",
  "test": "react-app-rewired test"
 }

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// .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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{
 "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"
 }
}

 

     
技术分享图片 HTML+CSS+JavaScript课堂视频 动力节点精华网页开发课程 HTML JavaScript视频教程 技术分享图片
技术分享图片 妙味课堂JavaScript视频教程 基础+提高+项目 三阶段 JavaScript实战式教学视频教程 技术分享图片
技术分享图片 百度、网易博客、58等大型网站JS实战+网页特效视频教程 JavaScript实战视频教程 技术分享图片
技术分享图片 33GWeb前段重磅教程推荐 麦子学院完整版Web前端视频教程 Web前端开发从入门到精通 技术分享图片
技术分享图片 网易微专业web前端开发课程三个月从入门成为前端开发工程师系列视频教程 web前端视频 技术分享图片
技术分享图片 54集课程实战 WEB前端网页设计实战视频教程 Web前端开发经典实战视频教程 技术分享图片
技术分享图片 JavaScript零基础入门视频教程 精华提炼快速入门JavaScript JavaScript入门视频教程 技术分享图片
技术分享图片 超经典的Web前端与移动开发基础视频 Web前端基础开发视频教程 移动开发基础视频教程 技术分享图片
技术分享图片 六套Bootstrap Web前端CSS框架开发视频教程合集 Bootstrap视频教程 技术分享图片
技术分享图片 HTML5 与 Bootstrap 应用实例视频教程 从设计图到网页视频教程 技术分享图片
技术分享图片 玩转前端技术栈(React+Redux) 系列课程
技术分享图片 TypeScript + React + Redux 实战简单天气APP全套完整项目  ...2
技术分享图片 淘宝经典Div+CSS布局实战 技术分享图片
技术分享图片 2017最新Ionic 2 跨平台实战 iOS & Android Apps
技术分享图片 2017最新vue2.0高级实战商城前端node.js实战后端
技术分享图片 2017最新HTML5与CSS3入门+实战全套视频教程
技术分享图片 移动端图片轮播及相册开发
技术分享图片 2017最新HTML5移动端商城布局实战开发全套视频
技术分享图片 2017最新移动端交互开发入门到精通全套视频教程
技术分享图片 玩转HTML5移动端APP混合应用开发实战

以上是关于详解create-react-app 2.0版本如何启用装饰器语法的主要内容,如果未能解决你的问题,请参考以下文章

create-react-app 构建的项目使用代理 proxy

python标准库介绍——14 gc 模块详解

OAuth 2.0详解

OAuth 2.0详解

Flink CDC 2.0 正式发布,详解核心改进

(转)OAuth 2.0授权协议详解和流程