<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
注: 如未找到組態檔請使用npm run eject彈出組態檔
當前對應版本react 16.2
在開發中往往是跨域請求的,設定一下請求代理可以解決這個問題
// package.json 檔案 "proxy": "http://xxx.xxx",
預設情況下在每次修改內容的時候都會重新整理頁面,有時候我們並不想要這樣,比如有一個bug需要重複點選或者重複操作多次才能實現,但是由於我們每次修改都會重新整理頁面,可能會導致這個bug很難被測試或者實現,這個設定在我看來非常有用,當然這不是必須的,但是可以適當的提高開發效率。在React 的入口檔案 src/index.js中,新增一些設定程式碼。
// src/index.js import React from 'react'; import ReactDOM from 'react-dom'; import App from './App'; import './index.css'; ReactDOM.render( <App />, document.getElementById('root') ); // +++++ 加入+++++ if (module.hot) { module.hot.accept(); }
options: { modules: true, localIdentName: '__[local]--[hash:base64:5]' }
注意: 使用 css-module會導致 ant 樣式失效...其次有其他css區域性化解決方案 比如 styled-components可參考我另外一篇文章 騷裡騷氣的styled-components快速入門
比如redux或者mobx可以使用@寫法
安裝 transform-decorators-legacy
npm install --save-dev babel-plugin-transform-decorators-legacy
外掛中使用legacy是因為Babel 5支援處理裝飾器,但是它也許會跟最終的標準有區別,所以才使用legacy這個詞。
// package.json "babel": { "presets": [ "react-app" ], "plugins": [ // +++ 加入設定 +++ "transform-decorators-legacy", // ...ant設定 ] }
請注意, plugins 的屬性非常重要: transform-decorators-legacy 應該放在最前面。 babel 設定有問題?請先檢視這個 issue 。
// package.json 檔案增加設定 ... "homepage": ".", ...
注: 如果直接開啟index.html後檔案正確載入但頁面仍然空白,請檢查你是否使用的是 BrowserRouter (同vue的history模式)需要後端設定支援,否則請使用HashRouter 即帶 #
當頁面巢狀過深時我們會發現在路徑通常都要這麼寫
import xx from './../../../xxx/qqq'通過設定webpack可以寫成import xx from '@/xxx/qqq'
// 修改 webpack.config.dev 與 webpack.config.prod 兩個檔案 加入相同設定 ... // +++ 找個開心的地方加入設定 function resolve(dir) { return path.join(__dirname, '..', dir) } // 修改 alias: { 'react-native': 'react-native-web', // +++ 加入設定 '@': resolve('src') }
注 : 這屬於webpack的設定,當然在vue-cli中也適用(更新:目前vue-cli已經預設支援這種設定)
// package.json 檔案 "babel": { "presets": [ "react-app" ], // 加入設定 "plugins": [ // 如果使用了 客製化顏色功能 將 "css" => true 同時需要設定 less ["import", { "libraryName": "antd-mobile", "style": "css" }] ] }
build之後發現包體積比較大,用 webpack-bundle-analyzer 分析各個js檔案的打包
// webpack.config.prod.js const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; // ...code // 找到 plugins 記得別加錯地方 很多 new xxx()的才是 plugins: [ new xxx(), new xxx(), // +++++ new BundleAnalyzerPlugin(), ]
有時候你會發現build時間過長,參見npm run build takes 1-2 hours to build 我們可以去除掉map檔案構建
// webpack.config.prod.js - devtool: shouldUseSourceMap ? 'source-map' : false // 改為 devtool: false,
安裝
yarn add less-loader less --dev
// webpack.config.dev.js module: { strictExportPresence: true, //... rules: [ // ... { test: /.(css|less)$/, // 修改 use: [ require.resolve('style-loader'), { loader: require.resolve('css-loader'), options: { importLoaders: 1, }, }, { loader: require.resolve('postcss-loader'), options: {}, }, // 增加 { loader: require.resolve('less-loader') // compiles Less to CSS } ], }, ] // webpack.config.prod.js { test: /.(css|less)$/, // 修改 loader: ExtractTextPlugin.extract( Object.assign( { fallback: { loader: require.resolve('style-loader'), options: { hmr: false, }, }, use: [ // ...code { loader: require.resolve('less-loader') // 增加 } ], }, extractTextPluginOptions ) ), }
由於create-react-app 忽略了 env.NODE_ENV 環境變數的設定,參考檔案 但是有時候在一些專案中,我們可能需要根據不同的環境變數使用不同的設定,那麼我們可以這麼做:
如果需要自定義環境變數 必須以REACT_APP_開頭
// 修改package.json "scripts": { "start": "cross-env REACT_APP_SECRET_API=development node scripts/start.js", "build": "node scripts/build.js", "test": "node scripts/test.js --env=jsdom" // 這三個是我加的 可以根據你的業務需求來 "build:dev": "cross-env REACT_APP_SECRET_API=development node scripts/build.js", "build:test": "cross-env REACT_APP_SECRET_API=test node scripts/build.js", "build:pro": "cross-env REACT_APP_SECRET_API=production node scripts/build.js", },
然後我們在執行 npm run build:dev 的時候就可以拿到 REACT_APP_SECRET_API的值為development前面加 cross-env是為了相容不同平臺 需要自行安裝 npm install cross-env --save-dev
以上就是create-react-app開發常用設定教學的詳細內容,更多關於create-react-app開發設定的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45