Next引入Antd和Sass

3次阅读

共计 1267 个字符,预计需要花费 4 分钟才能阅读完成。

这里并不是 Next 引入 Antd 或者 Sass 教程!!
这篇文章讲的是如何在 next 里同时引入 sass 和 antd

问题起源

我想在 Next 里引入 Antd 框架,跟着网上教程将 antd 引入到框架中后,我又想引入 scss 但这时候就报错了。
因为 next 本身支持解析 css, 网上的文档和教程包括官方文档都是 @next/css, 或者 @next/sass 两个插件引用其一来达到支持 css 和 scss 的效果。
像这样:

// scss
const withSass = require('@zeit/next-sass')
module.exports = withSass({})
//css
const withCSS = require('@zeit/next-css')
module.exports = withCSS({/* config options here */})

但是两个插件只能取其一,如果你引入过 antd 就知道,想使用 antd 需要在全局import 'antd/dist/antd.css',而引入了这个 css 文件那么就需要用上 next-css 插件,用了这个插件我们就用不了 next-scss,这就是问题的所在了。

解决办法

在这里就不具体写怎么在 next 里单独引入 antd 或者 scss 了,因为网上的其它教程和官方文档已经跟详细了
我在这里假设你已经会单独引用 antd 和 scss 了。
next 官方有一个插件能实现我们的需求:* next-compose-plugins
他能让我们同时引用多个插件

npm install --save next-compose-plugins

next.config.js 改成这样

// next.config.js
const withSass = require('@zeit/next-sass')
const withCss = require('@zeit/next-css');
const withPlugins = require("next-compose-plugins");

module.exports = withPlugins([withSass,withCss], {webpack: (config) => {return config},
});

_app.js 文件不变

import App from 'next/app'

import 'antd/dist/antd.css'

export default App

然后我在 public/assets/css 下新建了一个 test.scss

这个文件有简单的 css 样式

.test{color: red;}

pages/index.js 将其引入

import {Button} from 'antd';
import '../public/assets/css/test.scss'
... 一些代码...
<Button> 测试按钮 </Button> //antd 按钮组件
<h1 className="title test">Welcome to Next.js!</h1> //test.scss 文件测试

最后看看效果:

antd 的按钮样式有了,test.scss 的标题变红样式也有了。
完工!

正文完
 0