1. 程式人生 > >詳解create-react-app 2.0版本如何啟用裝飾器語法

詳解create-react-app 2.0版本如何啟用裝飾器語法

1.2 cor tab borde web前端視頻教程 analyze ots adl div

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版本如何啟用裝飾器語法