#reactjs #webpack #next.js #webpack-bundle-analyzer
#reactjs #webpack #next.js #webpack-bundle-analyzer
Вопрос:
Я пытаюсь уменьшить размер пакета моего сайта, используя https://www.npmjs.com/package/@next/bundle-analyzer
На данный момент, когда я запускаю npm analyze
с
"analyze": "cross-env ANALYZE=true next build",
Он не выводит HTML-файлы с необходимой визуализацией.
Это мой next.config.js
const withPWA = require('next-pwa')
const runtimeCaching = require('next-pwa/cache')
const withBundleAnalyzer = require('@next/bundle-analyzer')({
enabled: process.env.ANALYZE === 'true',
})
module.exports = withPWA({
pwa: {
dest: 'public',
runtimeCaching,
},
poweredByHeader: false,
},
withBundleAnalyzer(),
)
используя это руководство по nextjs-analyze-app-bundle.
Что происходит не так?
Комментарии:
1. Вы когда-нибудь выясняли ответ? У меня такая же проблема.
Ответ №1:
Похоже, на этот вопрос был дан ответ на доске вопросов Vercel. Копирование их решения здесь:
Эти плагины представляют собой функции, которые улучшают объект конфигурации, поэтому вам нужно обернуть их вместо предоставления в качестве аргументов:
const withPWA = require('next-pwa')
const runtimeCaching = require('next-pwa/cache')
const withBundleAnalyzer = require('@next/bundle-analyzer')({
enabled: process.env.ANALYZE === 'true',
});
module.exports = withBundleAnalyzer(withPWA({
pwa: {
dest: 'public',
runtimeCaching,
},
poweredByHeader: false,
}));
Ответ №2:
Раньше я делал это так,
module.exports = withBundleAnalyzer(
withPWA({
pwa: {
dest: 'public',
runtimeCaching,
},
poweredByHeader: false,
})
)
module.exports =
{
env: {
BASE_URL: process.env.BASE_URL,
},
future: {
webpack5: true,
},
reactStrictMode: true,
}
Не уверен, но я думаю, что вам нужно иметь только один module.exports
, поэтому я завернул свои другие вещи внутрь withBundleAnalyzer
, как это
module.exports = withBundleAnalyzer(
withPWA({
pwa: {
dest: 'public',
runtimeCaching,
},
poweredByHeader: false,
}),
{
env: {
BASE_URL: process.env.BASE_URL,
},
future: {
webpack5: true,
},
reactStrictMode: true,
}
)