您的位置:首页 > 教育 > 锐评 > 沈阳家用电梯公司网站制作_建筑英才网和中国建筑人才网_下载优化大师app_怎么给自己的公司建立网站

沈阳家用电梯公司网站制作_建筑英才网和中国建筑人才网_下载优化大师app_怎么给自己的公司建立网站

2025/1/4 17:59:05 来源:https://blog.csdn.net/m0_73574455/article/details/144811608  浏览:    关键词:沈阳家用电梯公司网站制作_建筑英才网和中国建筑人才网_下载优化大师app_怎么给自己的公司建立网站
沈阳家用电梯公司网站制作_建筑英才网和中国建筑人才网_下载优化大师app_怎么给自己的公司建立网站

1. 入口和输出配置

module.exports = {// 入口配置:指定打包的入口文件entry: {// 主应用入口main: './src/main.js',// 第三方库单独打包,有利于缓存vendor: ['vue', 'vuex', 'vue-router'],// 管理后台入口(多页面应用)admin: './src/admin/index.js'},// 输出配置:指定打包后文件的输出规则output: {// 输出路径:绝对路径path: path.resolve(__dirname, 'dist'),// 输出文件名:// [name]: entry中定义的key// [chunkhash]: 根据内容生成的hash,内容不变hash不变// [contenthash]: 针对文件内容级别的hashfilename: 'js/[name].[chunkhash:8].js',// 异步加载的文件名chunkFilename: 'js/[name].[chunkhash:8].chunk.js',// 资源引用的公共路径,比如CDNpublicPath: process.env.NODE_ENV === 'production'? 'https://cdn.example.com/': '/',// 每次构建前清理输出目录clean: true}
}

2. 模块处理配置(Loader)

module: {rules: [// JavaScript/TypeScript处理{test: /\.(js|ts)$/,  // 匹配文件exclude: /node_modules/,  // 排除文件use: [{loader: 'babel-loader',options: {cacheDirectory: true,  // 启用缓存presets: ['@babel/preset-env'],plugins: ['@babel/plugin-transform-runtime']}}]},// Vue文件处理{test: /\.vue$/,use: [{loader: 'vue-loader',options: {hotReload: true  // 热重载}}]},// 样式处理{test: /\.(css|scss)$/,use: [// 生产环境下抽取CSS文件process.env.NODE_ENV === 'production'? MiniCssExtractPlugin.loader: 'style-loader',{loader: 'css-loader',options: {modules: {  // CSS模块化localIdentName: '[name]__[local]--[hash:base64:5]'},importLoaders: 2  // 之前有2个loader}},'postcss-loader',  // 自动添加前缀等'sass-loader'  // 处理scss]},// 图片处理{test: /\.(png|jpe?g|gif|webp)$/,type: 'asset',  // webpack5的新资源模块parser: {dataUrlCondition: {// 小于10kb转base64maxSize: 10 * 1024}},generator: {// 输出文件名filename: 'images/[name].[hash:8][ext]'}},// 字体和其他文件{test: /\.(woff2?|eot|ttf|otf)$/,type: 'asset/resource',generator: {filename: 'fonts/[name].[hash:8][ext]'}}]
}

3. 插件配置(Plugins)

plugins: [// HTML生成插件new HtmlWebpackPlugin({template: './public/index.html',filename: 'index.html',chunks: ['main', 'vendor'],  // 指定要加载的chunksminify: {  // 压缩HTMLcollapseWhitespace: true,removeComments: true},// 注入变量templateParameters: {title: '应用标题',BASE_URL: '/'}}),// CSS提取插件new MiniCssExtractPlugin({filename: 'css/[name].[contenthash:8].css',chunkFilename: 'css/[name].[contenthash:8].chunk.css'}),// 定义环境变量new webpack.DefinePlugin({'process.env': {NODE_ENV: JSON.stringify(process.env.NODE_ENV),VUE_APP_API: JSON.stringify(process.env.VUE_APP_API)}}),// 复制静态资源new CopyWebpackPlugin({patterns: [{from: 'public',to: 'assets',globOptions: {ignore: ['**/index.html']  // 忽略index.html}}]}),// 进度条new webpack.ProgressPlugin({activeModules: false,entries: true,modules: true,modulesCount: 500,profile: false,dependencies: true,dependenciesCount: 10000})
]

4. 优化配置

optimization: {// 代码分割配置splitChunks: {chunks: 'all',  // 对所有chunks都进行分割minSize: 20000,  // 生成chunk的最小体积minChunks: 1,   // 最少被引用次数maxAsyncRequests: 30,  // 最大异步请求数maxInitialRequests: 30,  // 最大初始化请求数cacheGroups: {  // 缓存组// 第三方库分割vendors: {test: /[\\/]node_modules[\\/]/,priority: -10,  // 优先级reuseExistingChunk: true,  // 复用已存在的chunkname: 'vendors'},// 公共模块分割common: {minChunks: 2,  // 最少被引用2次priority: -20,reuseExistingChunk: true,name: 'common'}}},// 压缩配置minimizer: [// JS压缩new TerserPlugin({parallel: true,  // 多进程压缩terserOptions: {compress: {drop_console: true,  // 移除consoledrop_debugger: true  // 移除debugger}}}),// CSS压缩new CssMinimizerPlugin({parallel: true})],// 运行时chunkruntimeChunk: {name: 'runtime'}
}

5. 开发服务器配置

devServer: {// 端口port: 3000,// 自动打开浏览器open: true,// 启用热更新hot: true,// 启用gzip压缩compress: true,// 代理配置proxy: {'/api': {target: 'http://localhost:8080',changeOrigin: true,pathRewrite: { '^/api': '' },// https配置secure: false}},// 历史模式historyApiFallback: true,// 客户端日志等级client: {logging: 'info',overlay: true  // 显示错误}
}

6. 解析配置

resolve: {// 扩展名extensions: ['.js', '.vue', '.json', '.ts'],// 别名alias: {'@': path.resolve(__dirname, 'src'),'vue$': 'vue/dist/vue.esm.js'},// 模块查找目录modules: ['node_modules',path.resolve(__dirname, 'src')]
}

7. 性能配置

performance: {// 文件大小提示hints: 'warning',// 入口文件最大体积maxEntrypointSize: 250000,// 资源文件最大体积maxAssetSize: 250000,// 过滤需要监控的文件assetFilter: function(assetFilename) {return assetFilename.endsWith('.js');}
}

这些配置的使用建议:

开发环境:

  • 使用 eval-source-map 提升构建速度
  • 启用热更新
  • 禁用代码压缩
  • 启用错误提示

生产环境:

  • 启用代码分割和压缩
  • 提取CSS文件
  • 优化图片和字体
  • 配置CDN
  • 启用gzip压缩

通用优化:

  • 合理使用缓存
  • 优化模块查找路径
  • 使用多进程构建
  • 合理配置chunk分割
  • 优化打包体积

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com