詳解create-react-app 2.0版本如何啟用裝飾器語法
阿新 • • 發佈:2018-12-23
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版本如何啟用裝飾器語法