From e681e609c4ca1a4d9160cd4455c91d49d329d858 Mon Sep 17 00:00:00 2001 From: ylx <497681109@qq.com> Date: Tue, 22 Apr 2025 06:28:10 +0000 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 278 ------------------------------------------------------ 1 file changed, 278 deletions(-) diff --git a/README.md b/README.md index 3e9b54b..e69de29 100644 --- a/README.md +++ b/README.md @@ -1,278 +0,0 @@ -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: {} - } - } -});