[next.js] svgr/webpack

nextjs如何配置svg文件,使其像react组件一样导入?

当前next.js 开发环境我使用了--turbo 来开启turbopack加速文件构建,所以之前的一些webpack loader之类的无法正常工作。通过搜索发现一般都是使用@svgr/webpack来处理svg,打开svgr官网发现有nextjs配置示例,
在这里插入图片描述
按照上面的配置后发现无效,组件直接报错了。思考了许久才发现是因为我在开发环境使用了–turbo,所以一些webpack的loader加载器不支持。

所以当时的笨方法是把.svg内容复制下来放到封装的react组件里。

偶然间在next.js的官网文档里turbo的介绍中发现就有@svgr/webpack的示例

在这里插入图片描述
直接在next.config.js里这样配下就好了,现在Next.js会把import进来的svg处理成react 组件。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Next.js中,webpack配置已经被封装在内部,非常适合使用默认配置。如果您需要进行自定义,则可以使用`next.config.js`文件进行配置。下面是一个示例`next.config.js`文件,其中包含一些常见的自定义配置选项: ```javascript const withSass = require('@zeit/next-sass') const withCSS = require('@zeit/next-css') const withImages = require('next-images') module.exports = withImages(withCSS(withSass({ webpack: (config, { isServer }) => { // 在客户端和服务器端共享一些模块 config.resolve.alias['@components'] = path.join(__dirname, 'components') config.resolve.alias['@utils'] = path.join(__dirname, 'utils') config.resolve.alias['@services'] = path.join(__dirname, 'services') // 处理 LESS 文件 config.module.rules.push({ test: /\.less$/, use: [ { loader: 'css-loader', options: { importLoaders: 1, sourceMap: true } }, { loader: 'less-loader', options: { javascriptEnabled: true, sourceMap: true } } ] }) // 处理 SVG 文件 config.module.rules.push({ test: /\.svg$/, use: ['@svgr/webpack'] }) // 处理 ESLint config.module.rules.push({ test: /\.(js|jsx)$/, enforce: 'pre', exclude: /node_modules/, loader: 'eslint-loader', options: { emitWarning: isServer ? false : true } }) return config } })))) ``` 这个例子展示了如何使用Next.js提供的自定义配置选项来添加一些常见的功能,例如处理LESS文件、SVG文件、共享模块别名和ESLint。需要安装`@zeit/next-sass`、`@zeit/next-css`和`next-images`依赖。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值