webpack 构建脚手架

news2025/4/17 7:23:23

前言
1. 构建项目
2. 局部安装
3. webpack.config.js
4. 打包 css 文件
5. 打包 less 文件
6. 打包 vue 文件
7. loader 和 plugin 区别
8. 添加版权的插件
9. html-webpack-plugin 打包 html 的插件
10. 压缩文件
11. webpack-dev-server 搭建本地服务器

前言


本文记录 webpack 的安装和使用,并且使用 webpack 搭建 vue 简易脚手架的过程

通过本文可以对 loader、plugin 有个简单的认识,记录了常用的 loader 和 plugin,可以增强对 vue 脚手架的理解

1. 构建项目


├── src    ├── js    │   ├── common.js    │   └── es6.js    └── main.js├── index.html

common.js

module.exports = {    name: 'liang',    age: 23,    gender: '男'}

es6.js

const add = (num1, num2) => num1 + num2const mul = (num1, num2) => num1 * num2export { add, mul }

main.js

const user = require('./js/common');const { add, mul } = require('./js/es6');console.log(user, add(2, 3), mul(2, 3));

2. 局部安装


初始化 npm 项目(有交互命令,一路回车即可)

npm init

安装 webpack,其中 webpack: 核心模块 webpack-cli: 命令行工具

npm install webpack webpack-cli --save-dev

webpack 3 执行打包

webpack ./src/main.js ./dist/bundle.js

webpack 5 执行打包

webpack ./src/main.js -o ./dist

3. webpack.config.js


在项目根目录下新建 webpack.config.js 文件,文件内容如下所示

const path = require('path');module.exports = {    entry: "./src/main.js",    output: {        path: path.resolve(__dirname, 'dist'),        filename: "bundle.js"    },    mode: "development"}

mode: “development” 是为了去除打包时的警告提示

 

在 src/index.html 中引入打包后生成的 js 文件

<script src="./dist/bundle.js"></script>

4. 打包 css 文件


新建 css 文件, 并且在 main.js 中依赖 css 文件

require('./css/normal.css')

您可能需要适当的加载程序来处理此文件类型,目前没有配置加载程序来处理此文件

You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file.

此时需要安装 css-loader

webpack 官网: https://webpack.js.org , webpack 中文网: https://webpack.docschina.org

第一步: 安装 css-loader

npm install --save-dev css-loader

 

第二步: 将 css-loader 引用到 webpack 的配置文件中,然后执行打包命令

此时会发现,css 文件虽然打包成功了,但是样式并没有加载到 dom 中。样式要加载到 dom 中,需要安装 style-loader

第三步: 安装 style-loader,然后将 style-loader 引用到 webpack 的配置文件中, 重新打包样式则已加载到 dom 中了

总结: css-loader 只负责加载 css 文件,并不会将样式添加到 dom 中,需要通过 style-loader 将样式添加到 dom 中。webpack 配置文件中的 module 配置项中的 use 使用多个 loader 时,加载顺序是从右到左的

npm install --save-dev style-loader
module: {    rules: [        {            test: /\.css$/i,            use: ["style-loader", "css-loader"],        },    ],},

5. 打包 less 文件


npm install less less-loader --save-dev

 

6. 打包 vue 文件


安装 vue 最新稳定版

npm install vue

vue loader

npm install vue-loader vue-template-compiler --save-dev
module: {    rules: [        {            test: /\.vue$/,            use: ["vue-loader"]        },    ],},

打包时提示:

使用 vue loader 时未使用相应的插件。确保在您的网页包配置中包含 VueLoaderPlugin。

vue-loader was used without the corresponding plugin. Make sure to include VueLoaderPlugin in your webpack config.

解决方案: 修改 webpack.config.js , 在 plugins 中引入 VueLoaderPlugin

const VueLoaderPlugin = require('vue-loader/lib/plugin');module.exports = {    plugins: [        new VueLoaderPlugin()    ]}

运行时出现以下错误

解决方法

module.exports = {    resolve: {        alias: {            'vue$': 'vue/dist/vue.esm.js'        }    }}

import 导入 vue 文件,想要省略 .vue 需要在 webpack.config.js 中添加以下配置项(默认只能省略 js 文件后缀)

module.exports = {    resolve: {        alias: {            extensions: ['.js', '.vue']        }    }}

7. loader 和 plugin 区别


loader 主要用于转换某些类型的模块,它是一个转换器

plugin 是插件,它是对 webpack 本身的扩展,它是一个扩展器。在 webpack.config.js 中的 plugins 中配置插件

8. 添加版权的插件


修改 webpack.config.js 配置文件:

这个插件是 webpack 自带的,不需要另外安装 npm 包, 打包生成的 js 文件头部会有版权信息

const webpack = require('webpack');module.exports = {    plugins: [        new webpack.BannerPlugin('最终版权归 liang 所有')    ]}

9. html-webpack-plugin 打包 html 的插件


这个插件可以将 html 文件打包到 dist 目录下

该插件会在 dist 下生成一个 index.html, 也可以指定模板生成, 自动将打包生成的 js 文件通过 script 标签引入到 index.html 中

安装插件

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

修改 webpack.config.js

const HtmlWebpackPlugin = require('html-webpack-plugin');module.exports = {    plugins: [        new HtmlWebpackPlugin({            template: "index.html"        })    ]}

10. 压缩文件


webpack 5 自带的压缩插件

npm install terser-webpack-<span class="hljs-keywo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/109566.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于鸽群算法改进的DELM预测 -附代码

鸽群算法改进的深度极限学习机DELM的回归预测 文章目录鸽群算法改进的深度极限学习机DELM的回归预测1.ELM原理2.深度极限学习机&#xff08;DELM&#xff09;原理3.鸽群算法4.鸽群算法改进DELM5.实验结果6.参考文献7.Matlab代码1.ELM原理 ELM基础原理请参考&#xff1a;https:…

自学编程的人成千上万,为什么坚持下来的没几个?

在互联网职位薪资水涨船高的现下&#xff0c;越来越多的人都对此跃跃欲试&#xff0c;想要通过学习进入这个新兴的朝阳行业。但或因为现下工作&#xff0c;或因为各种压力&#xff0c;多数人并不能果断投入&#xff0c;自学成了常见的学习方式&#xff01; 但是据数据显示&…

PDF翻译怎么操作?教你几个PDF翻译的技巧

当你在查阅国外资料的时候&#xff0c;有没有发现很多资料都是以PDF格式来呈现的&#xff1f;毕竟&#xff0c;PDF文件方便查阅也不易出现格式混乱的状态。但是&#xff0c;这对于英语基础不好的小伙伴就有一定的影响了&#xff0c;而且如果一字一字去翻译解释&#xff0c;那也…

linux安装php环境

linux安装php环境首先&#xff0c;打开终端并更新系统的软件包列表。运行以下命令然后安装 PHP。运行以下命令安装完成后&#xff0c;可以使用以下命令检查 PHP 的版本&#xff1a;如果您需要使用 PHP 的扩展&#xff0c;可以使用以下命令安装它们&#xff1a;例如&#xff0c;…

[2]MQTT基础知识

MQTT(消息队列遥测传输)是一个客户端服务端架构的发布/订阅模式的消息传输协议。 MQTT协议最初版本是在1999年建立的。该协议的发明人是的Andy Stanford-Clark和Arlen Nipper。 MQTT协议是当今世界上最受欢迎的物联网协议&#xff0c;广泛应用于车联网、智能家居、即时聊天应用…

自学Python学习经验分享

学编程语言有个小秘诀&#xff0c;直接上项目就是干&#xff0c;做完之后你就是Pythoner了。 不要怕没基础&#xff0c;边做边学边查&#xff0c;进步很快的。 因人而异&#xff0c;一周或一个月就能基本入门&#xff0c;当然也需要你百分百的投入。 以前我也觉得收集资料、钻…

一个新工具引发IT巨变:程序员在转行,不懂编程的人却成了程序员

编程一定需要代码吗&#xff1f;我看未必。 科技进步可谓日新月异&#xff0c;无代码开发在近几年&#xff0c;俨然被越来越多的人所熟知。这是一场解放码农的运动&#xff0c;让不懂编程的人也能进行软件开发。 我在发文前&#xff0c;看到了一则信息&#xff0c;更加坚定了…

【MySQL】MySQL初级笔记

MySQL1、初识MySQL(了解)1.1、为什么学习数据库1.2、什么是数据库1.3、什么是DBMS1.4、MySQL简介1.7 连接数据库1.8 基本操作2、操作数据库2.1、结构化查询语句分类2.2、数据库操作2.3、数据值和列类型数值类型字符串类型日期和时间型数值类型NULL值2.4、数据字段属性(重点)UnS…

SpringBoot配置文件的加载顺序

一、引言 如果我们了解SpringBoot配置文件的加载顺序&#xff0c;对项目的开发和部署会有很大的帮助。举个工作中的例子&#xff0c;我们的项目是微服务架构模式&#xff0c;用Nacos做注册中心&#xff08;可以配置每个微服务&#xff09;&#xff0c;所有服务请求需要通过网关…

解决PageHelper版本不匹配,结果可能全部返回问题

1.问题&#xff1a; 使用 pagehelper &#xff0c;如果和mybatis版本不匹配&#xff0c;就会出现返回结果错误问题&#xff0c;比如&#xff1a;本来想返回pageNum&#xff1a;1&#xff0c;pageSize:1的数据&#xff0c;但却是全部返回。自己的代码没问题的情况下&#xff0c…

无向图以及图的java代码实现

1. 图的定义 定义&#xff1a;图是由一组顶点和一组能够将两个顶点相连的边组成的 1.1特殊的图 自环&#xff1a;即一条连接一个顶点和其自身的边&#xff1b;平行边&#xff1a;连接同一对顶点的两条边&#xff1b; 1.2图的分类 按照连接两个顶点的边的不同&#xff0c;可…

含文档+PPT+源码等]精品基于SSM的图书管理系统[包运行成功]

博主介绍&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 项目名称 含文档PPT源码等]精品基于SSM的图书管理系统[包运行成功] 系统介绍 《基于SSM框架图书管理系统开发与设计》 该项目含有源码、配套开发软件、软件安…

Pytest用例运行及先后顺序

温馨提示 本篇约1600字&#xff0c;看完需3-5分钟&#xff0c;学习学半小时&#xff0c;加油&#xff01; 先看普通函数运行顺序 import pytestdef test_one():print("我是清安")def test_02():print("--02--")def test_a():print("--a--")de…

老生常谈的一个问题,转行学习编程,是自学还是报班

1、自学 a、优点&#xff1a; 1、自我分析问题和自我解决问题的能力比较的强&#xff1a; 自学要自己的找学习资料&#xff0c;学习要自己的摸索学习&#xff0c;学习中遇到的问题要自己去分析&#xff0c;自己去解决。 通过自学成功的人往往自我分析问题和自我解决问题的能…

Android实现戴口罩人脸检测和戴口罩识别(附Android源码)

Android实现戴口罩人脸检测和戴口罩识别(附Android源码) 目录 Android实现戴口罩人脸检测和戴口罩识别(附Android源码) 1.戴口罩识别的方法 &#xff08;1&#xff09;基于多类别目标检测的戴口罩识别方法 &#xff08;2&#xff09;基于人脸检测戴口罩分类识别方法 2.戴…

【Javassist】快速入门系列05 当有指定方法调用时替换方法调用的内容

系列文章目录 01 在方法体的开头或结尾插入代码 02 使用Javassist实现方法执行时间统计 03 使用Javassist实现方法异常处理 04 使用Javassist更改整个方法体 05 当有指定方法调用时替换方法调用的内容 文章目录系列文章目录前言引入Javassist jar包当有指定方法调用时替换方法…

1. 位1的个数

文章目录题目解法一&#xff1a;右移统计解题思路代码实现复杂度分析解法二&#xff1a;清除最低位解题思路代码实现复杂度分析解法三&#xff1a;分治解题思路代码实现复杂度分析解法四&#xff1a;JDK Integer.bitCount(int i)代码实现题目 编写一个函数&#xff0c;输入是一…

DPU02:国产USB转UART的桥接控制器兼容替代CP2102

目录DPU02芯片特性USB配置数据和序列号设置DPU02应用领域DPU02是高度集成的USB转UART的桥接控制器芯片&#xff0c;可将RS-232设计更新为USB设计&#xff0c;并简化PCB组件空间。DPU02包括了一个USB 2.0全速功能控制器、USB收发器、振荡器、EEPROM和带有完整调制解调控制信号的…

一文详解深度学习冷板式液冷散热技术规范及要求

深度学习 | 东数西算 | 液冷散热 数据挖掘 | 数据分析 | 高性能计算 随着深度学习、东数西算、医药研发、数据分析、数据挖掘、遥感测绘、高性能计算等技术的快速发展&#xff0c;数据中心的创建与日俱增&#xff0c;传统的风冷散热方式已经不同满足数据中心散热的需求&#x…

Huffman二进制编码以及文本的压缩与解压

目录Huffman树转化成二进制编码文本压缩文本解压Huffman树转化成二进制编码 在上一篇博客的末尾&#xff0c;将Huffman树转化成了01 构成的字符串&#xff0c;显然在实际应用中不是这种操作。我们实际想要的是01构成的一串bits&#xff1b;举个例子&#xff1a;字符"A&quo…