revert a3c6bf8e07
revert Merge branch 'dev' of http://47.129.22.53:22345/lizixuan/m2pool_web_frontend into dev :wq
This commit is contained in:
parent
66a2381e41
commit
65e02d1d26
278
README.md
278
README.md
|
@ -0,0 +1,278 @@
|
||||||
|
const { defineConfig } = require('@vue/cli-service');
|
||||||
|
const path = require('path');
|
||||||
|
const PrerenderSPAPlugin = require('@dreysolano/prerender-spa-plugin');
|
||||||
|
const Renderer = PrerenderSPAPlugin.PuppeteerRenderer;
|
||||||
|
const SitemapWebpackPlugin = require('sitemap-webpack-plugin').default;
|
||||||
|
const CompressionPlugin = require('compression-webpack-plugin');
|
||||||
|
|
||||||
|
module.exports = defineConfig({
|
||||||
|
transpileDependencies: true,
|
||||||
|
|
||||||
|
devServer: {
|
||||||
|
hot: true, // 启用HMR
|
||||||
|
liveReload: true, // 启用实时重载
|
||||||
|
client: {
|
||||||
|
overlay: false // 禁用错误遮罩层
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
configureWebpack: config => {
|
||||||
|
const baseConfig = {
|
||||||
|
cache: {
|
||||||
|
type: 'filesystem', // 使用文件系统缓存 加快二次构建速度 减少重复编译
|
||||||
|
buildDependencies: {
|
||||||
|
config: [__filename]
|
||||||
|
},
|
||||||
|
// 添加缓存配置
|
||||||
|
cacheDirectory: path.resolve(__dirname, 'node_modules/.cache/webpack'),
|
||||||
|
name: process.env.NODE_ENV // 区分环境
|
||||||
|
},
|
||||||
|
optimization: {
|
||||||
|
moduleIds: 'deterministic',
|
||||||
|
splitChunks: { // 代码分割配置文件系统缓存比内存缓存更持久 可以在多次构建之间复用编译结果
|
||||||
|
chunks: 'all',
|
||||||
|
minSize: 30000, // 最小分块大小
|
||||||
|
maxSize: 300000, // 最大分块大小 避免单个文件过大
|
||||||
|
cacheGroups: { // 缓存组配置
|
||||||
|
vendors: { // 第三方库分组
|
||||||
|
name: 'chunk-vendors',
|
||||||
|
test: /[\\/]node_modules[\\/]/,
|
||||||
|
priority: -10,
|
||||||
|
chunks: 'initial'
|
||||||
|
},
|
||||||
|
common: { // 公共模块分组
|
||||||
|
name: 'chunk-common',
|
||||||
|
minChunks: 2,
|
||||||
|
priority: -20,
|
||||||
|
chunks: 'initial',
|
||||||
|
reuseExistingChunk: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
plugins: [ //压缩静态资源 减少传输体积 提升加载速度
|
||||||
|
new CompressionPlugin({
|
||||||
|
test: /\.(js|css|html|svg)$/,
|
||||||
|
threshold: 10240,
|
||||||
|
minRatio: 0.8
|
||||||
|
})
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
if (process.env.NODE_ENV === 'production') {
|
||||||
|
// 优化预渲染插件配置
|
||||||
|
const prerenderPlugin = new PrerenderSPAPlugin({
|
||||||
|
staticDir: path.join(__dirname, 'dist'),
|
||||||
|
// 只预渲染最重要的路由
|
||||||
|
routes: ['/zh', '/en','/en/dataDisplay', '/zh/dataDisplay','/zh/rate', '/en/rate','/zh/ServiceTerms', '/en/ServiceTerms','/zh/apiFile', '/en/apiFile'],
|
||||||
|
renderer: new Renderer({
|
||||||
|
renderAfterTime: 1000, // 增加等待时间,确保内容加载完成
|
||||||
|
maxConcurrentRoutes:2, // 降低并发数,避免资源竞争
|
||||||
|
timeout: 10000, // 增加超时时间
|
||||||
|
headless: true,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}),
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
const zhSitemapPlugin = new SitemapWebpackPlugin({
|
||||||
|
base: 'https://m2pool.com/zh',
|
||||||
|
paths: [
|
||||||
|
{
|
||||||
|
path: '/zh',
|
||||||
|
changefreq: 'daily',
|
||||||
|
lastmod: new Date().toISOString()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/zh/dataDisplay',
|
||||||
|
changefreq: 'weekly',
|
||||||
|
lastmod: new Date().toISOString()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/zh/ServiceTerms',
|
||||||
|
changefreq: 'monthly',
|
||||||
|
lastmod: new Date().toISOString()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/zh/apiFile',
|
||||||
|
changefreq: 'weekly',
|
||||||
|
lastmod: new Date().toISOString()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/zh/rate',
|
||||||
|
changefreq: 'weekly',
|
||||||
|
lastmod: new Date().toISOString()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/zh/AccessMiningPool/nexaAccess',
|
||||||
|
changefreq: 'weekly',
|
||||||
|
lastmod: new Date().toISOString()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/zh/AccessMiningPool/grsAccess',
|
||||||
|
changefreq: 'weekly',
|
||||||
|
lastmod: new Date().toISOString()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/zh/AccessMiningPool/monaAccess',
|
||||||
|
changefreq: 'weekly',
|
||||||
|
lastmod: new Date().toISOString()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/zh/AccessMiningPool/dgbsAccess',
|
||||||
|
changefreq: 'weekly',
|
||||||
|
lastmod: new Date().toISOString()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/zh/AccessMiningPool/dgbqAccess',
|
||||||
|
changefreq: 'weekly',
|
||||||
|
lastmod: new Date().toISOString()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/zh/AccessMiningPool/dgboAccess',
|
||||||
|
changefreq: 'weekly',
|
||||||
|
lastmod: new Date().toISOString()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/zh/AccessMiningPool/rxdAccess',
|
||||||
|
changefreq: 'weekly',
|
||||||
|
lastmod: new Date().toISOString()
|
||||||
|
},
|
||||||
|
],
|
||||||
|
options: {
|
||||||
|
filename: 'sitemap-zh.xml',
|
||||||
|
lastmod: true,
|
||||||
|
changefreq: 'weekly',
|
||||||
|
priority: 0.7
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const enSitemapPlugin = new SitemapWebpackPlugin({
|
||||||
|
base: 'https://m2pool.com/en',
|
||||||
|
paths: [
|
||||||
|
{
|
||||||
|
path: '/en',
|
||||||
|
priority: 1.0,
|
||||||
|
changefreq: 'daily',
|
||||||
|
lastmod: new Date().toISOString()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/en/dataDisplay',
|
||||||
|
priority: 0.8,
|
||||||
|
changefreq: 'weekly',
|
||||||
|
lastmod: new Date().toISOString()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/en/ServiceTerms',
|
||||||
|
priority: 0.6,
|
||||||
|
changefreq: 'monthly',
|
||||||
|
lastmod: new Date().toISOString()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/en/apiFile',
|
||||||
|
priority: 0.7,
|
||||||
|
changefreq: 'weekly',
|
||||||
|
lastmod: new Date().toISOString()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/en/rate',
|
||||||
|
priority: 0.8,
|
||||||
|
changefreq: 'weekly',
|
||||||
|
lastmod: new Date().toISOString()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/en/AccessMiningPool/nexaAccess',
|
||||||
|
changefreq: 'weekly',
|
||||||
|
lastmod: new Date().toISOString()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/en/AccessMiningPool/grsAccess',
|
||||||
|
changefreq: 'weekly',
|
||||||
|
lastmod: new Date().toISOString()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/en/AccessMiningPool/monaAccess',
|
||||||
|
changefreq: 'weekly',
|
||||||
|
lastmod: new Date().toISOString()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/en/AccessMiningPool/dgbsAccess',
|
||||||
|
changefreq: 'weekly',
|
||||||
|
lastmod: new Date().toISOString()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/en/AccessMiningPool/dgbqAccess',
|
||||||
|
changefreq: 'weekly',
|
||||||
|
lastmod: new Date().toISOString()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/en/AccessMiningPool/dgboAccess',
|
||||||
|
changefreq: 'weekly',
|
||||||
|
lastmod: new Date().toISOString()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/en/AccessMiningPool/rxdAccess',
|
||||||
|
changefreq: 'weekly',
|
||||||
|
lastmod: new Date().toISOString()
|
||||||
|
},
|
||||||
|
|
||||||
|
],
|
||||||
|
options: {
|
||||||
|
filename: 'sitemap-en.xml',
|
||||||
|
lastmod: true,
|
||||||
|
changefreq: 'weekly',
|
||||||
|
priority: 0.7
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
baseConfig.plugins.push(zhSitemapPlugin);
|
||||||
|
baseConfig.plugins.push(enSitemapPlugin);
|
||||||
|
baseConfig.plugins.push(prerenderPlugin);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return baseConfig;
|
||||||
|
},
|
||||||
|
|
||||||
|
chainWebpack: config => {
|
||||||
|
// HTML压缩配置
|
||||||
|
config.plugin('html').tap(args => {
|
||||||
|
args[0].minify = {
|
||||||
|
removeComments: true, // 删除 HTML 注释减小文件体积
|
||||||
|
collapseWhitespace: true, // 压缩空白字符 删除多余的空格和换行
|
||||||
|
removeAttributeQuotes: true, // 删除属性的引号
|
||||||
|
collapseBooleanAttributes: true, // 简化布尔属性
|
||||||
|
removeScriptTypeAttributes: true // 删除默认的 script type 属性type="text/javascript"
|
||||||
|
};
|
||||||
|
// META 标签配置
|
||||||
|
args[0].meta = {
|
||||||
|
// 移动端视口配置
|
||||||
|
viewport: 'width=device-width, initial-scale=1, shrink-to-fit=no',
|
||||||
|
'format-detection': 'telephone=no',// 禁用电话号码自动识别
|
||||||
|
'apple-mobile-web-app-capable': 'yes' // 支持添加到 iOS 主屏幕
|
||||||
|
};
|
||||||
|
return args;
|
||||||
|
});
|
||||||
|
|
||||||
|
// 移除 prefetch 插件
|
||||||
|
//禁用 Vue CLI 默认的预取功能 prefetch 会在主资源加载完后,
|
||||||
|
// 自动下载所有其他路由的资源对于大型应用,可能会预加载过多不必要的资源
|
||||||
|
config.plugins.delete('prefetch')
|
||||||
|
},
|
||||||
|
//生产环境不生成 source map 文件源码映射信息 减小打包体积 提高网站安全性
|
||||||
|
productionSourceMap: false,
|
||||||
|
|
||||||
|
css: {
|
||||||
|
extract: true, //组件中的 CSS 提取至独立的 CSS 文件中 支持并行加载,减少页面阻塞
|
||||||
|
sourceMap: false,// CSS 不启用 source maps 减少构建文件大小
|
||||||
|
loaderOptions: {
|
||||||
|
css: {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
Loading…
Reference in New Issue