• vue3 webpack打包流程及安装 (1)


     npm run build 也可以打包 如果没有特殊需求 可以使用 效果其实是差不多的

    ---------------------------------------------------------------------------------------------------------------------------------

    webpack网址 : 起步 | webpack 中文文档 (docschina.org)

    报错    跟着安装报错  后来查了才知道  是因为 webpack 版本有问题 安装的时候看好

    webpack的版本过高  产生的错误 需要卸掉从新安装webpack -v  查看 版本号

    --------------------------------------------------------------------------------------------------------------------------- 

    正式开始

    第一步,开始复杂的安装过程

    1. 安装 安装报错的话可以把后边的 --save-dev 删掉
    2. npm install webpack webpack-cli --save-dev //安装
    3. npm install css-loader style-loader –save-dev //css
    4. npm install file-loader –save-dev //loader
    5. npm install html-webpack-plugin --save-dev //plugin
    6. npm i less less-loader -D //less
    7. npm install sass-loader -D //sass
    8. npm i url-loader file-loader -D //图片
    9. 在黑窗口中执行 命令,查看webapck版本
    10. npm webpack -v
    11. 卸载
    12. 删除局部webpack-cli
    13. npm uninstall webpack-cli
    14. 删除全局webpack
    15. npm uninstall -g webpack
    16. 删除本地wbpack
    17. npm uninstall webpack

    按你需要的安装 

    第二步 。需要单独创建 webpack.config.js 在文件进行配置打包的东西(部分)

    1. const path = require('path');
    2. console.log(path.resolve(__dirname, 'dist')) // e:\big ---project\Webpack project\test01\dist
    3. const HTMLPlugin = require('html-webpack-plugin');
    4. const MiniCssExtractPlugin = require('mini-css-extract-plugin');
    5. module.exports = {
    6. mode: "development", //模式: "production" | "development" | "none"
    7. entry: './src/index.js', //入口
    8. output: { // 输出
    9. filename: 'main.js', // 打包后的文件名字
    10. //filename: 'main.[hash].js', // 打包后的文件名字变成带有哈希值
    11. //filename: 'main.[hash:8].js', // 文件的哈希值只显示8
    12. path: path.resolve(__dirname, 'dist') // 路径必须是一个绝对路径, --dirname:是使用当前目录出生成一个dist文件夹
    13. },
    14. devServer: { // 开发服务配置
    15. port: 3000,
    16. progress: true, // 是否显示加载进度条
    17. contentBase: './dist', // 映射地址
    18. compress: true // 是否压缩
    19. },
    20. plugins: [ // 附加插件
    21. new HTMLPlugin({ // 打包html文件
    22. template: './src/index.html', // 模板文件
    23. filename: 'index.html', // 打包出来的文件名
    24. minify: {
    25. removeAttributeQuotes: true, // 删除html页面的双引号
    26. collapseWhitespace: true, // 将html页面压缩成一行
    27. },
    28. hash: true // 将文件打包成哈希包
    29. }),
    30. new MiniCssExtractPlugin({ // 打包css文件
    31. filename: "index.css" // 抽离出来的文件名字
    32. })
    33. ],
    34. module: { // 模块配置
    35. rules: [ //规则
    36. /* css-loader 解析 @import这种语法
    37. style-loader 它是将css插入到head的标签中
    38. loader的执行顺序是从右向左执行
    39. */
    40. { // 解析 css文件
    41. test: /\.css$/,
    42. use: [
    43. MiniCssExtractPlugin.loader,
    44. 'css-loader',
    45. 'postcss-loader'
    46. ]
    47. },
    48. // 图片
    49. {
    50. test: /\.(png|jpg|jpeg|gif)$/i,
    51. type: 'asset', //小于8k打包成base64,小图打包进js里,可以 减少http请求次数 但是转成base64字符串会让体积增大20%-30% 所以大于8k还是直接打包进静态资源目录中
    52. generator: {
    53. filename: 'assets/[hash][ext][query]'
    54. }
    55. },
    56. { // 解析 less文件
    57. test: /\.less$/,
    58. use: [
    59. MiniCssExtractPlugin.loader,
    60. 'css-loader',
    61. 'less-loader',
    62. 'postcss-loader'
    63. ]
    64. },
    65. { // 解析 scss文件
    66. test: /\.less$/,
    67. use: [
    68. MiniCssExtractPlugin.loader,
    69. 'css-loader',
    70. "scss-loader",
    71. 'postcss-loader'
    72. ]
    73. }
    74. ]
    75. }
    76. };

    第三步 ,如果是统一文件入口  那就需要创建一个 js文件   

    例如  index.js文件存放代码 把要打包的都引进来 

    无论是css  js  还是html都得是单独的文件  不然 无法进行打包

    (1) 先创建一个 b.js 和 c.js文件  把他俩引进  index.js文件 

    例如  b.js 和 c.js文件 

      例如  b.js 和 c.js文件  把他俩引进  index.js文件 

      例如 webpack.config.js   部署打包机制

    运行 webpack -w   就可以在dist 查看打包成果 

    --------------------------------------------------------------------------------------------------------------------------------

    (2.1)  less转换成css 

    例如 创建一个less的文件写样式  然后运行就会得到一个同步css  webpack内容和上边的一样

    不需要其他的引入之类的 

    1. // 基于commonjs规范定义配置
    2. module.exports = {
    3. // 指定环境
    4. mode: 'development',
    5. // 入口
    6. entry: './src/index.js',
    7. // 出口
    8. output: {
    9. // 指定发布的文件名称
    10. filename: './main.js'
    11. },
    12. // 配置module属性
    13. module: {
    14. // 通过rules定义加载机的规则
    15. rules:[
    16. {
    17. test:/\.css$/,
    18. use: ["style-loader", "css-loader", "sass-loader"]
    19. },
    20. {
    21. test: /\.(png|jpg|jpeg|gif)$/i,
    22. type: 'asset', //小于8k打包成base64,小图打包进js里,可以 减少http请求次数 但是转成base64字符串会让体积增大20%-30% 所以大于8k还是直接打包进静态资源目录中
    23. generator: {
    24. filename: 'assets/[hash][ext][query]'
    25. }
    26. }
    27. ]
    28. }
    29. }
    1. const path = require('path');
    2. console.log(path.resolve(__dirname, 'dist')) // e:\big ---project\Webpack project\test01\dist
    3. const HTMLPlugin = require('html-webpack-plugin');
    4. const MiniCssExtractPlugin = require('mini-css-extract-plugin');
    5. module.exports = {
    6. mode: "development", //模式: "production" | "development" | "none"
    7. entry: './src/index.js', //入口
    8. output: { // 输出
    9. filename: 'main.js', // 打包后的文件名字
    10. //filename: 'main.[hash].js', // 打包后的文件名字变成带有哈希值
    11. //filename: 'main.[hash:8].js', // 文件的哈希值只显示8
    12. path: path.resolve(__dirname, 'dist') // 路径必须是一个绝对路径, --dirname:是使用当前目录出生成一个dist文件夹
    13. },
    14. devServer: { // 开发服务配置
    15. port: 3000,
    16. progress: true, // 是否显示加载进度条
    17. contentBase: './dist', // 映射地址
    18. compress: true // 是否压缩
    19. },
    20. plugins: [ // 附加插件
    21. new HTMLPlugin({ // 打包html文件
    22. template: './src/index.html', // 模板文件
    23. filename: 'index.html', // 打包出来的文件名
    24. minify: {
    25. removeAttributeQuotes: true, // 删除html页面的双引号
    26. collapseWhitespace: true, // 将html页面压缩成一行
    27. },
    28. hash: true // 将文件打包成哈希包
    29. }),
    30. new MiniCssExtractPlugin({ // 打包css文件
    31. filename: "index.css" // 抽离出来的文件名字
    32. })
    33. ],
    34. module: { // 模块配置
    35. rules: [ //规则
    36. /* css-loader 解析 @import这种语法
    37. style-loader 它是将css插入到head的标签中
    38. loader的执行顺序是从右向左执行
    39. */
    40. { // 解析 css文件
    41. test: /\.css$/,
    42. use: [
    43. MiniCssExtractPlugin.loader,
    44. 'css-loader',
    45. 'postcss-loader'
    46. ]
    47. },
    48. // 图片
    49. {
    50. test: /\.(png|jpg|jpeg|gif)$/i,
    51. type: 'asset', //小于8k打包成base64,小图打包进js里,可以 减少http请求次数 但是转成base64字符串会让体积增大20%-30% 所以大于8k还是直接打包进静态资源目录中
    52. generator: {
    53. filename: 'assets/[hash][ext][query]'
    54. }
    55. },
    56. { // 解析 less文件
    57. test: /\.less$/,
    58. use: [
    59. MiniCssExtractPlugin.loader,
    60. 'css-loader',
    61. 'less-loader',
    62. 'postcss-loader'
    63. ]
    64. },
    65. { // 解析 scss文件
    66. test: /\.less$/,
    67. use: [
    68. MiniCssExtractPlugin.loader,
    69. 'css-loader',
    70. "scss-loader",
    71. 'postcss-loader'
    72. ]
    73. }
    74. ]
    75. }
    76. };

    (2.2)  sass转换成css 

    例如 创建一个scss的文件写样式  然后运行就会得到一个同步css  webpack内容和上边的一样

    不需要其他的引入之类的 

    报错  因为我把 后缀scss  写成了 sass

    --------------------------------------------------------------------------------------------------------------------------------

    (3)  css 

    例如 在index.js (入口文件)引入css文件 

    例如 创建一个css的文件写样式  创建html 引入打包后的js创建div包裹class webpack内容同上 

    运行html文件 可以看见看见整体代码展示效果

     

    --------------------------------------------------------------------------------------------------------------------------------

    (4)  图片

     例如 在index.js (入口文件)引入图片文件  看一下安装没有url  运行打包成功

    引入 

    1. // 引入图片
    2. let img_url = require('./assets/logo.png');
    3. let img2_url = require('./assets/QQ截图20230904182803.jpg');
    4. // 创建图片元素
    5. let img = new Image();
    6. let img2 = new Image();
    7. // 设置图片的路径
    8. img.src = img_url; //打包显示
    9. img2.src = img2_url.default; //打包不显示
    10. // 上树
    11. document.body.appendChild(img);
    12. document.body.appendChild(img2);

      webpack.config.js

    1. // 基于commonjs规范定义配置
    2. module.exports = {
    3. // 指定环境
    4. mode: 'development',
    5. // 入口
    6. entry: './src/index.js',
    7. // 出口
    8. output: {
    9. // 指定发布的文件名称
    10. filename: './main.js'
    11. },
    12. // 配置module属性
    13. module: {
    14. // 通过rules定义加载机的规则
    15. rules:[
    16. {
    17. test:/\.css$/,
    18. use: ["style-loader", "css-loader", "sass-loader"]
    19. },
    20. {
    21. test: /\.(png|jpg|jpeg|gif)$/i,
    22. type: 'asset', //小于8k打包成base64,小图打包进js里,可以 减少http请求次数 但是转成base64字符串会让体积增大20%-30% 所以大于8k还是直接打包进静态资源目录中
    23. generator: {
    24. filename: 'assets/[hash][ext][query]'
    25. }
    26. }
    27. ]
    28. }
    29. }

    第四步 。使用打包指令 webapck -w 可以进行随时随地打包  不需要每次都进行 单独打包 你每次保存 下边都会有变化 就是正常运行了  

    在dist查看打包的数据 

    参考: 

    Webpack的使用方法_webpack 命令_ID月光倾城的博客-CSDN博客

    webpack打包全流程_webpack打包的整个过程_理想今年妳几岁的博客-CSDN博客

  • 相关阅读:
    第9章 K8s进阶篇-持久化存储入门
    Win10笔记本开启热点后无法正常联网怎么办?
    Golang洗牌算法(Golang乱序算法)
    DC-DC100V降压芯片,12V2A/5V2A降压型转换器,优势替代ETA1801
    Mysql之用户管理
    MFC Windows 程序设计[221]之状态栏的显示(附源码)
    IDEA如何配置Tomcat
    VoIP Push 在海外音视频业务中的应用
    使用c#实现一个简单绘图软件(绘制矩形、多边形,画笔、橡皮擦功能)的完整教程
    Python3中.whl文件介绍
  • 原文地址:https://blog.csdn.net/weixin_68266812/article/details/132722641