欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > nodejs 010:Webpack 可视化分析插件 webpack-bundle-analyzer的使用

nodejs 010:Webpack 可视化分析插件 webpack-bundle-analyzer的使用

2024/10/25 2:26:23 来源:https://blog.csdn.net/ResumeProject/article/details/142298942  浏览:    关键词:nodejs 010:Webpack 可视化分析插件 webpack-bundle-analyzer的使用

安装

  • yarn add --dev webpack-bundle-analyzer

原始webpack.config.js

  • 代码定义了 Webpack 的配置,主要任务是将 JavaScript 和 CSS 文件打包,并将 CSS 提取到单独的文件中,配置了对 Electron 应用的支持,同时还将 React 相关的模块映射到 Preact,以减小打包体积。
// 引入 Node.js 的 path 模块,用于处理文件和目录路径
const path = require('path');
// 引入webpack的 ExtractTextPlugin 插件,用于将 CSS 提取到单独的文件中
// 打包样式有两种方法,一种是使用style-loader自动将css代码放到生成的style标签中,并且插入到head标签里。另一种就是使用extract-text-webpack-plugin插件,将样式文件单独打包,打包输出的文件由配置文件中的output属性指定。然后我们在入口HTML页面写个link标签引入这个打包后的样式文件
// extract-text-webpack-plugin用法 https://segmentfault.com/a/1190000018134652
const ExtractTextPlugin = require('extract-text-webpack-plugin');// 实例化 ExtractTextPlugin 插件,配置 CSS 文件的输出路径和名称
const extractCSSPlugin = new ExtractTextPlugin({filename: 'css/[name].css', // CSS 文件将被输出到 'css' 目录下,文件名与入口文件名称相同allChunks: true, // 提取所有的 CSS,包括异步加载的 CSS
});module.exports = {// 指定 Webpack 的入口文件,Webpack 将从这个文件开始构建依赖图entry: path.resolve(__dirname, 'src', 'ui', 'index.js'), // 入口文件路径为 'src/ui/index.js'output: {// 配置 Webpack 打包后的输出文件filename: 'js/bundle.js', // 输出的 JavaScript 文件名称为 'bundle.js',存放在 'js' 目录下path: path.resolve(__dirname, 'src', 'static'), // 输出目录为 'src/static'},target: 'electron', // 指定构建目标为 Electron 应用module: {// 配置如何处理不同类型的模块rules: [{test: /\.(js|jsx)$/, // 匹配所有 JavaScript 和 JSX 文件loader: 'babel-loader', // 使用 babel-loader 处理这些文件include: [path.resolve(__dirname, 'src', 'ui'), // 仅处理 'src/ui' 目录下的文件],},{test: /\.(css|scss)$/, // 匹配所有 CSS 和 SCSS 文件loader: extractCSSPlugin.extract({use: [{loader: 'css-loader', // 使用 css-loader 解析 CSS 文件options: {modules: true, // 启用 CSS 模块化,允许在 CSS 文件中使用局部作用域importLoaders: 2, // 在处理 CSS 文件时,前两个加载器也会被使用localIdentName: '[name]--[local]___[hash:base64:5]', // CSS 类名的命名规则},},],}),},],},resolve: {// 配置模块解析规则alias: {'react': 'preact-compat', // 将 'react' 映射到 'preact-compat',以便使用 Preact 替代 React'react-dom': 'preact-compat', // 将 'react-dom' 映射到 'preact-compat'},modules: [path.resolve(__dirname, 'node_modules'), // 解析模块时首先从 'node_modules' 查找path.resolve(__dirname, 'src', 'ui'), // 然后从 'src/ui' 查找path.resolve(__dirname, 'src', 'electron'), // 还可以从 'src/electron' 查找],extensions: ['.js', '.jsx', '.json'], // 解析模块时支持的文件扩展名},plugins: [extractCSSPlugin], // 使用 ExtractTextPlugin 插件来提取 CSS
};

使用webpack-bundle-analyzer

const path = require('path');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const extractCSSPlugin = new ExtractTextPlugin({filename: 'css/[name].css',allChunks: true,
});
// 1.引入webpack的 BundleAnalyzerPlugin 插件
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
const bundleAnalyzerPlugin = new BundleAnalyzerPlugin();module.exports = {entry: path.resolve(__dirname, 'src', 'ui', 'index.js'),output: {filename: 'js/bundle.js',path: path.resolve(__dirname, 'src', 'static'),},target: 'electron',module: {rules: [{test: /\.(js|jsx)$/,loader: 'babel-loader',include: [path.resolve(__dirname, 'src', 'ui'),],},{test: /\.(css|scss)$/,loader: extractCSSPlugin.extract({use: [{loader: 'css-loader',options: {modules: true,importLoaders: 2,localIdentName: '[name]--[local]___[hash:base64:5]',},},],}),},],},resolve: {alias: {'react': 'preact-compat','react-dom': 'preact-compat',},modules: [path.resolve(__dirname, 'node_modules'),path.resolve(__dirname, 'src', 'ui'),path.resolve(__dirname, 'src', 'electron'),],extensions: ['.js', '.jsx', '.json'],},plugins: [extractCSSPlugin,bundleAnalyzerPlugin], // 2.注册BundleAnalyzerPlugin插件
};

可视化结果

PS C:\Users\kingchuxing\Documents\IPFS\party\Partyshare-master> npx webpack
…………
Webpack Bundle Analyzer is started at http://127.0.0.1:8888
Use Ctrl+C to close it

在这里插入图片描述

版权声明:

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

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