UNPKG

@moxy/next-common-files

Version:

Next.js plugins that configure webpack with loaders for common files.

72 lines (66 loc) 2.18 kB
'use strict'; const svgoLoader = { loader: require.resolve('svgo-loader'), options: { plugins: [ { name: 'preset-default', params: { overrides: { removeViewBox: false, cleanupIDs: false, }, }, }, ], }, }; module.exports = (pluginOptions = {}) => (nextConfig = {}) => ({ ...nextConfig, webpack(config, options) { const { dev, isServer } = options; const { assetPrefix = '' } = nextConfig; const { inline = false, options: loaderOptions, ...userOptions } = pluginOptions; if (inline) { config.module.rules.push({ test: /\.svg$/, use: [ { loader: require.resolve('raw-loader'), }, svgoLoader, { loader: require.resolve('svg-css-modules-loader'), options: { transformId: true, }, }, ], ...userOptions, }); } else { config.module.rules.push({ test: /\.svg$/, use: [ { loader: require.resolve('url-loader'), options: { limit: 0, name: dev ? '[path][name].[ext]' : 'images/[name].[contenthash:20].[ext]', publicPath: `${assetPrefix}/_next/static/chunks/media`, outputPath: 'static/chunks/media', emitFile: !isServer, ...loaderOptions, }, }, svgoLoader, ], ...userOptions, }); } if (typeof nextConfig.webpack === 'function') { return nextConfig.webpack(config, options); } return config; }, });