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

这篇具有很好参考价值的文章主要介绍了vue3 webpack打包流程及安装 (1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

vue3 webpack打包流程及安装 (1),webpack,前端,node.js

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

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

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

vue3 webpack打包流程及安装 (1),webpack,前端,node.js

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

vue3 webpack打包流程及安装 (1),webpack,前端,node.js

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

正式开始

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

安装   安装报错的话可以把后边的  --save-dev  删掉

npm install webpack webpack-cli --save-dev   //安装

npm install css-loader style-loader –save-dev  //css

npm install file-loader –save-dev   //loader

npm install html-webpack-plugin --save-dev   //plugin  

npm i less less-loader -D   //less

npm install sass-loader -D    //sass

npm i url-loader file-loader -D  //图片


在黑窗口中执行 命令,查看webapck版本
npm webpack -v

卸载
删除局部webpack-cli
npm uninstall webpack-cli
删除全局webpack
npm uninstall -g webpack
删除本地wbpack
npm uninstall webpack

按你需要的安装 

vue3 webpack打包流程及安装 (1),webpack,前端,node.js

vue3 webpack打包流程及安装 (1),webpack,前端,node.js

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


const path = require('path');
console.log(path.resolve(__dirname, 'dist')) // e:\big ---project\Webpack project\test01\dist

const HTMLPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

module.exports = {
    mode: "development", //模式:  "production" | "development" | "none"
    entry: './src/index.js', //入口
    output: { // 输出
        filename: 'main.js', // 打包后的文件名字
        //filename: 'main.[hash].js', // 打包后的文件名字变成带有哈希值
        //filename: 'main.[hash:8].js', // 文件的哈希值只显示8位
        path: path.resolve(__dirname, 'dist') // 路径必须是一个绝对路径,  --dirname:是使用当前目录出生成一个dist文件夹
    },
    devServer: { // 开发服务配置
        port: 3000,
        progress: true, // 是否显示加载进度条
        contentBase: './dist', // 映射地址
        compress: true // 是否压缩
    },
    plugins: [ // 附加插件
        new HTMLPlugin({  // 打包html文件
            template: './src/index.html', // 模板文件
            filename: 'index.html', // 打包出来的文件名
            minify: {
                removeAttributeQuotes: true, // 删除html页面的双引号
                collapseWhitespace: true, // 将html页面压缩成一行
            },
            hash: true // 将文件打包成哈希包
        }),
        new MiniCssExtractPlugin({  // 打包css文件
            filename: "index.css" // 抽离出来的文件名字
        })
    ],
    module: { // 模块配置
        rules: [ //规则
            /*  css-loader 解析 @import这种语法
                style-loader 它是将css插入到head的标签中
                loader的执行顺序是从右向左执行
             */
            { // 解析 css文件
                test: /\.css$/,
                use: [
                    MiniCssExtractPlugin.loader,
                    'css-loader',
                    'postcss-loader'
                ]
            },
            // 图片
            {
                test: /\.(png|jpg|jpeg|gif)$/i,
                type: 'asset',          //小于8k打包成base64,小图打包进js里,可以 减少http请求次数   但是转成base64字符串会让体积增大20%-30%   所以大于8k还是直接打包进静态资源目录中
                generator: {
                    filename: 'assets/[hash][ext][query]'
                }
            },
            { // 解析 less文件
                test: /\.less$/,
                use: [
                    MiniCssExtractPlugin.loader,
                    'css-loader',
                    'less-loader',
                    'postcss-loader'
                ]
            },
            { // 解析 scss文件
                test: /\.less$/,
                use: [
                    MiniCssExtractPlugin.loader,
                    'css-loader',
                    "scss-loader",
                    'postcss-loader'
                ]
            }
        ]
    }
};

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

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

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

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

例如  b.js 和 c.js文件 

vue3 webpack打包流程及安装 (1),webpack,前端,node.js

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

vue3 webpack打包流程及安装 (1),webpack,前端,node.js

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

vue3 webpack打包流程及安装 (1),webpack,前端,node.js

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

vue3 webpack打包流程及安装 (1),webpack,前端,node.js

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

(2.1)  less转换成css 

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

不需要其他的引入之类的 

vue3 webpack打包流程及安装 (1),webpack,前端,node.js

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

        ]
    }
}


const path = require('path');
console.log(path.resolve(__dirname, 'dist')) // e:\big ---project\Webpack project\test01\dist

const HTMLPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

module.exports = {
    mode: "development", //模式:  "production" | "development" | "none"
    entry: './src/index.js', //入口
    output: { // 输出
        filename: 'main.js', // 打包后的文件名字
        //filename: 'main.[hash].js', // 打包后的文件名字变成带有哈希值
        //filename: 'main.[hash:8].js', // 文件的哈希值只显示8位
        path: path.resolve(__dirname, 'dist') // 路径必须是一个绝对路径,  --dirname:是使用当前目录出生成一个dist文件夹
    },
    devServer: { // 开发服务配置
        port: 3000,
        progress: true, // 是否显示加载进度条
        contentBase: './dist', // 映射地址
        compress: true // 是否压缩
    },
    plugins: [ // 附加插件
        new HTMLPlugin({  // 打包html文件
            template: './src/index.html', // 模板文件
            filename: 'index.html', // 打包出来的文件名
            minify: {
                removeAttributeQuotes: true, // 删除html页面的双引号
                collapseWhitespace: true, // 将html页面压缩成一行
            },
            hash: true // 将文件打包成哈希包
        }),
        new MiniCssExtractPlugin({  // 打包css文件
            filename: "index.css" // 抽离出来的文件名字
        })
    ],
    module: { // 模块配置
        rules: [ //规则
            /*  css-loader 解析 @import这种语法
                style-loader 它是将css插入到head的标签中
                loader的执行顺序是从右向左执行
             */
            { // 解析 css文件
                test: /\.css$/,
                use: [
                    MiniCssExtractPlugin.loader,
                    'css-loader',
                    'postcss-loader'
                ]
            },
            // 图片
            {
                test: /\.(png|jpg|jpeg|gif)$/i,
                type: 'asset',          //小于8k打包成base64,小图打包进js里,可以 减少http请求次数   但是转成base64字符串会让体积增大20%-30%   所以大于8k还是直接打包进静态资源目录中
                generator: {
                    filename: 'assets/[hash][ext][query]'
                }
            },
            { // 解析 less文件
                test: /\.less$/,
                use: [
                    MiniCssExtractPlugin.loader,
                    'css-loader',
                    'less-loader',
                    'postcss-loader'
                ]
            },
            { // 解析 scss文件
                test: /\.less$/,
                use: [
                    MiniCssExtractPlugin.loader,
                    'css-loader',
                    "scss-loader",
                    'postcss-loader'
                ]
            }
        ]
    }
};

(2.2)  sass转换成css 

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

不需要其他的引入之类的 

vue3 webpack打包流程及安装 (1),webpack,前端,node.js

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

vue3 webpack打包流程及安装 (1),webpack,前端,node.js

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

(3)  css 

例如 在index.js (入口文件)引入css文件 
vue3 webpack打包流程及安装 (1),webpack,前端,node.js

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

vue3 webpack打包流程及安装 (1),webpack,前端,node.js

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

 vue3 webpack打包流程及安装 (1),webpack,前端,node.js

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

(4)  图片

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

vue3 webpack打包流程及安装 (1),webpack,前端,node.js

引入 

// 引入图片
let img_url = require('./assets/logo.png');  
let img2_url = require('./assets/QQ截图20230904182803.jpg');

// 创建图片元素
let img = new Image();
let img2 = new Image();


// 设置图片的路径
img.src = img_url;  //打包显示
img2.src = img2_url.default;  //打包不显示

// 上树
document.body.appendChild(img);
document.body.appendChild(img2);

  webpack.config.js

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

        ]
    }
}

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

vue3 webpack打包流程及安装 (1),webpack,前端,node.js

在dist查看打包的数据 

vue3 webpack打包流程及安装 (1),webpack,前端,node.js

参考: 

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

webpack打包全流程_webpack打包的整个过程_理想今年妳几岁的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-705514.html

到了这里,关于vue3 webpack打包流程及安装 (1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • node.js下载安装和报错大全(express、淘宝镜像、webpack、Vue)

    目录 一、概述 二、操作步骤 (一)下载node.js (二) 安装node.js (三)查看环境变量 (四)查看版本信息 (五)新建全局下载包和缓存包位置 (六)配置环境变量 (七)安装express(内嵌http模块) 安装成功 安装失败 解决办法一(最好的办法)  解决办法二(其次) (八

    2024年02月01日
    浏览(77)
  • Node.js入门与 Webpack模块打包工具

    目录 Node.js入门 fs模块-读写文件 path模块-路径处理  压缩前端html 认识URL中的端口号 http模块-创建Web服务 体验 Web 服务除了接口数据以外,还能返回网页资源等  Node.js模块化  ECMAScript标准-默认导出和导入 ECMAScript标准-命名导出和导入  包的概念 npm软件包管理器 npm安装所有依

    2024年02月11日
    浏览(44)
  • Web前端VScode/Vue3/git/nvm/node开发环境安装

    目录 1 基本配置 2 安装vscode 3 安装vue 4 配置bash 5 安装nvm 6 安装node 7 安装yarn 8 新建项目 9 运行helloworld 本篇是为了做前端开发的环境而写。使用的操作系统是windows 10 64位 现在做vue和node基本就是vscode和webstorm,本篇就是用vscode。 可以从主页直接下载 选择windows版本下载即可。

    2024年02月04日
    浏览(61)
  • Webpack打包图片-js-vue

    为了演示我们项目中可以 加载图片 ,我们需要在项目中使用图片,比较常见的使用图片的方式是两种: img 元素,设置 src 属性; 其他元素(比如div),设置 background-image 的css属性; 我们当前使用的webpack版本是webpack5: 在webpack5之前,加载这些资源我们需要使用一些 loader

    2024年02月06日
    浏览(39)
  • 前端vue打包时遇到‘default‘ is not exported by node_modules/vue/dist/vue.runtime.esm-bundler.js, imported by

    主要原因是由于用到的组件进行npm i时默认使用的是vue2,不支持vue3,但是前端框架使用的是vue3,所以导致重构编码时会报错, 网上查询说         当我们在使用rollup编译es6时,可能会遇到以下报错问题,需要 安装@rollup/plugin-commonjs插件 npm install @rollup/plugin-commonjs 最后,

    2024年02月05日
    浏览(65)
  • 【热门前端【vue框架】】——vue框架和node.js的下载和安装保姆式教程

    👨‍💻个人主页 :@程序员-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏 :vue框架开发   Vue.js 是一款流行的 JavaScript 前端框架,它以其简单、灵活和高效的特性,成为了构建现代化 Web 应用程序的首选工具

    2024年04月27日
    浏览(56)
  • 前端Vue项目webpack打包部署后源码泄露解决

    前端项目使用nuxt框架(基于Vue),采用Webpack打包,部署到服务器后,进行漏洞检测。 经Webpack打包部署到服务器后,访问并打开开发者模式,在Source下出现[name]路径,内部包含(webpack)buildin文件夹。(做漏洞分析时,会认为该内容涉及源码泄露) 1.首先考虑源码泄露的问题 打

    2024年02月03日
    浏览(87)
  • AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(七)

    实操: server.js utils/lib/index.js utils/package.json 从别处(网上、其他人手中)拿到写好的项目,一般不携带node_modules文件夹(所占存储空间大) 但有package.json文件,里面记载了当前项目下载过的包 还有package-lock.json文件,固定软件包的版本 导入模块/包,除了自己创建的模块、包

    2024年01月22日
    浏览(67)
  • 十五、Webpack打包图片-js-Vue、Label命令、resolve模块解析

    为了演示我们项目中可以加载图片,我们需要在项目中使用图片,比较常见的使用图片的方式是两种: img元素,设置src属性; 其他元素(比如div),设置background-image的css属性; 这个时候我们打包会报错: 我们当前使用的webpack版本是webpack5: 在webpack5之前,加载这些资源我

    2024年02月09日
    浏览(40)
  • Vue3学习-01_前端工程化与webpack

    最近在学习Vue知识,参照的教程是黑马程序员官网提供的免费前端教程,这里记录一下自己的学习笔记以及遇到的相关问题。 前端工程化指的是:在企业级的前端项目开发中,把前端开发所需的工具、技术、流程、经验等进行规范化、标准化。最终落实到细节上,就是实现前

    2024年02月13日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包