- 20
- 0
package.json配置:
{
"name": "hawerblog",
"version": "0.1.0",
"private": true,
"dependencies": {
"antd": "^3.15.0",
"babel-plugin-import": "^1.11.0",
"customize-cra": "^0.2.12",
"less": "^3.9.0",
"less-loader": "^4.1.0",
"react": "^16.8.4",
"react-app-rewire-define-plugin": "^1.0.0",
"react-app-rewire-less": "^2.1.3",
"react-app-rewired": "^2.1.1",
"react-dom": "^16.8.4",
"react-router-dom": "^4.4.0",
"react-scripts": "2.1.8",
"webpack-merge": "^4.2.1"
},
"scripts": {
"start": "set PORT=4000 && react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": [
">0.2%",
"not dead",
"not ie <= 11",
"not op_mini all"
]
}
想实现的目标效果:
import React, { Component } from 'react'
import 'antd/dist/antd.css'
import { Button } from 'antd'
import { BrowserRouter as Router, Route, Link } from 'react-router-dom'
import './styles/main.less'
import routes from './routers'
import Banner from './components/banner'
class App extends Component {
render () {
return (
<div className='App'>
<Button type='primary'>
Primary
</Button>
<Banner/>
<Router>
<header className='title'>
{routes.map((r, key) => {
if (r.text) {
return <Link key={key} to={r.path}>
{r.text}
</Link>
}
})}
</header>
{routes.map((route, key) => {
if (route.exact) {
return <Route
key={key}
exact
path={route.path}
render={props => (
<route.component {...props} routes={route.routes} />
)} />
}else {
return <Route key={key} path={route.path} render={props => (
<route.component {...props} routes={route.routes} />
)} />
}
})}
</Router>
</div>
)
}
}
export default App
直接引入下面这句,样式就有了,不需要全局引入完整的antd样式,查阅资料我选用的是react-app-rewired方案
import { Button } from 'antd'
config-overrides.js 配置如下
const {
override,
fixBabelImports,
addLessLoader,
addBabelPlugin
} = require('customize-cra')
const path = require('path')
const merge = require('webpack-merge')
const rewireLess = require('react-app-rewire-less')
const rewireDefinePlugin = require('react-app-rewire-define-plugin')
override(
fixBabelImports('import', {
libraryName: 'antd',
libraryDirectory: 'es',
style: true
}),
addLessLoader({
javascriptEnabled: true,
modifyVars: { '@primary-color': '#1DA57A' }
})
)
module.exports = function override(config, env) {
config.resolve = {
...config.resolve,
alias: { '@': path.resolve(__dirname, 'src') }
}
config.module.rules.push({ test: /\.less$/ }, { test: /\.css$/ })
return config
}
现在是不知道怎么样才能排除对应css/less 的node_modules引用
各位朋友走过路过给个思路谢谢!
0
打赏
收藏
点击回答
您的回答被采纳后将获得:提问者悬赏的 11 元积分
- 共 0 条
- 全部回答
-
自杀前夜 普通会员 1楼
在React应用中,你可以在应用的
root文件中使用react-app-rewired插件来设置组件的样式局部加载。这个插件会自动重新加载组件,从而允许你使用默认的组件样式。以下是配置
react-app-rewired的步骤:- 首先,你需要在你的项目中安装
react-app-rewired。你可以使用npm来安装:
npm install react-app-rewired- 然后,在你的
root文件(例如App.js)中导入Rewired组件:
jsx import React from 'react'; import Rewired from 'react-app-rewired'; import './App.css';然后,你可以使用
Rewired来设置组件的样式局部加载:```jsx import Rewired from 'react-app-rewired'; import App from './App';
Rewired.use(reload => ({ reset: () => { window.location.reload(); }, }));
ReactDOM.render(
, document.getElementById('root')); ``` 在这个例子中,我们使用
use钩子来定义一个reset函数,这个函数会在组件重新加载时被调用。reset函数会将浏览器的location对象重置为null,从而导致浏览器重定向到初始的页面。注意:
react-app-rewired插件的使用可能会导致一些浏览器兼容性问题。因此,你应该在开发环境中的浏览器上测试你的应用。 - 首先,你需要在你的项目中安装
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
