Node的版本不能低於 4.0。官方建議使用 Node6+ 和 npm3+。 安裝create-react-app的方式也很是簡單,能夠直接使用npm命令進行全局安裝。javascript
npm install -g create-react-appcss
建立一個新appjava
create-react-app my-app
cd my-app/react
在開發模式下運行app。webpack
npm startios
在package.json文件裏更改打開的端口號web
{
"name": "smart-customer-service",
"version": "0.1.0",
"private": true,
"dependencies": {
"antd": "^3.5.3",
"axios": "^0.18.0",
"react": "^16.3.2",
"react-dom": "^16.3.2",
"react-loadable": "^5.4.0",
"react-router": "^4.2.0",
"react-router-dom": "^4.2.2",
"react-scripts": "^1.1.4"
},
"scripts": {
<!--更改項目本地打開的端口號-->
"start": "set PORT=3006 && react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test --env=jsdom",
"eject": "react-app-rewired eject"
},
"devDependencies": {
"babel-plugin-import": "^1.7.0",
"react-app-rewire-less": "^2.1.1",
"react-app-rewired": "^1.5.2"
},
<!--webpack代理,能夠跨域-->
"proxy": "http://10.60.34.7:8080"
}
複製代碼
yarn add less less-loadernpm
yarn ejectjson
在配置文件中作了兩處修改axios
第一處是找到 cssRegex和cssModuleRegex 在他們的下面新建lessRegex和lessModuleRegex變量
第二處是增長 less-loader
的配置
具體修改以下
//第一塊大概在38行左右
const lessRegex = /\.less$/;
const lessModuleRegex = /\.module\.less$/;
//第二塊大概在318行左右
//配置less
{
test: lessRegex,
exclude: lessModuleRegex,
use: getStyleLoaders({ importLoaders: 2 }, 'less-loader'),
},
{
test: lessModuleRegex,
use: getStyleLoaders(
{
importLoaders: 2,
modules: true,
getLocalIdent: getCSSModuleLocalIdent,
},
'less-loader'
),
},
複製代碼
yarn add @babel/plugin-transform-react-jsx-source
$ yarn add react-app-rewired customize-cra
複製代碼
/* package.json */
"scripts": {
- "start": "react-scripts start",
+ "start": "react-app-rewired start",
- "build": "react-scripts build",
+ "build": "react-app-rewired build",
- "test": "react-scripts test",
+ "test": "react-app-rewired test",
}
複製代碼
const { override, fixBabelImports, addLessLoader } = require('customize-cra');
module.exports = override(
fixBabelImports('import', {
libraryName: 'antd',
libraryDirectory: 'es',
style: true,
}),
addLessLoader({
javascriptEnabled: true,
modifyVars: { '@primary-color': '#1DA57A' },
}),
);
複製代碼
或
const { injectBabelPlugin } = require('react-app-rewired');
const rewireLess = require('react-app-rewire-less');
const rewireSvgReactLoader = require('react-app-rewire-svg-react-loader');
module.exports = function override(config, env) {
config = injectBabelPlugin(['import', { libraryName: 'antd', libraryDirectory: 'es', style: 'css' }],config);
config = injectBabelPlugin(['import', { libraryName: 'antd', style: true }], config);
config = rewireSvgReactLoader(config, env);
config = rewireLess.withLoaderOptions({
javascriptEnabled: true, //修復 less3 致使的 webpack 構建錯誤
// antd 全局配置的樣式
modifyVars: {
'body-background':'#E3E7EE',
'layout-header-height':'70px',
'table-header-bg':'#F7FAFC',
'border-radius-base':'0',
'@btn-default-bg': '#6995FF',
'@btn-default-color': '#fff',
}
})(config, env);
return config;
}
複製代碼