webpack使用详解
官网
一、介绍
从webpack4.+进行介绍,会对Webpack常用配置一一讲解,各个功能点都有对应的详细例子,你如果能动手跟着本文中的例子完整写一次,你会觉得Webpack也不过如此。
1.1、webpack是什么
webpack是一种前端资源构建工具(模块打包器),一个静态模块打包器.在webpack看来,前端的所有资源文件(js/json/css/image/less/sass...)都会作为模块处理。它将根据模块的依赖关系进行静态分析,打包生成对应的静态资源。
从 v4.0.0 开始,webpack 可以不用再引入一个配置文件来打包项目,然而,它仍然有着高度可配置性,可以很好满足你的需求。
配置文件: webpack.config.js
1.2、webpack都能干些什么

1.3、webpack五个核心概念
- mode 模式 development / production ,来设置 mode 参数,你可以启用相应模式下的 webpack 内置的优化
- entry 入口 本项目应该使用哪个模块,来作为构建其内部依赖图的开始(指定打包入口文件)
- output 输出 在哪里输出它所创建的 bundles,以及如何命名这些文件,默认值为 ./dist
- loader loader 让webpack能够去处理那些非js文件(webpack自身只理解js)
- plugins 插件 则可以用于执行范围更广的任务。插件的范围包括,从打包优化和压缩,一直到重新定义环境中的变量。插件接口功能极其强大,可以用来处理各种各样的任务。
二、简单案例
2.1、准备工作
1、首先:webpack是运行在node环境中的,Node >= 8.10 和 npm >= 5.6(node环境链接:https://nodejs.org/en/ 直接下载电脑对应的版本即可。)
1、接下来新建项目文件夹这里我起名为:webpack_project
2、打开终端切换到项目文件夹下
3、执行命令初始化项目生成package.json: npm init -y
4、执行命令下载webpack与webpack-cli依赖: npm i -D webpack webpack-cli
npm init -y
npm i -D webpack webpack-cli


tips:
install 可简写为 i,
--global 可简写为 -g,
--save-dev 可简写为 -D
--save 可简写为 -S
2、检查是否安装成功
这里注意一下版本 有些版本会遇到一些坑 , 若运行不起来,可以复制我这个版本放到对应的位置上, 然后npm i初始化一下

3、使用npx来完成本项目中的命令执行
npm webpack --version

4、在package.json文件中配置webpack运行脚本命令

执行命令 npm run build
2.2、新建
webpack_project 中创建src,dist文件夹,接下来再创建三个文件:
index.html --放在dist文件夹中;
hello.js --放在src文件夹中;
index.js --放在src文件夹中;

我们在index.html中写下html代码,它的作用是为了引入我们打包后的js文件: <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Webpack Project</title>
</head>
<body>
<div id='root'></div>
<script src="bundle.js"></script> <!--这是打包之后的js文件,我们暂时命名为bundle.js-->
</body>
</html>
我们在hello.js中导出一个模块: // hello.js
module.exports = function() {
let hello = document.createElement('div');
hello.innerHTML = "Long time no see!";
return hello;
};
然后在index.js中引入这个模块(hello.js):
//index.js
const hello = require('./hello.js');
document.querySelector("#root").appendChild(hello());
2.3 通过配置文件来使用webpack
在当前项目的根目录下新建一个配置文件webpack.config.js,我们写下如下简单配置代码,目前只涉及入口配置(相当于我们的index.js,从它开始打包)和出口配置(相当于我们打包生成的bundle.js)。
// webpack.config.js
module.exports = {
mode:'development',
entry: __dirname + "/src/index.js", // 入口文件
output: {
path: __dirname + "/dist", //打包后的文件存放的地方
filename: "bundle.js" //打包后输出文件的文件名
}
}
//注:__dirname是node.js中的一个全局变量,它指向当前执行脚本所在的目录,即C:\Users\sjt\DeskTop\webpack-project(这是我当前的目录)
但平时我们看到的脚手架配置也比较喜欢采用node.js的path模块来处理绝对路径,所以我们也可以采用如下的写法,和上述的效果是一样的:
// webpack.config.js
const path = require('path');
module.exports = {
mode:'development', //开发环境
entry: path.join(__dirname, "/src/index.js"), // 入口文件
output: {
path: path.join( __dirname, "/dist"), //打包后的文件存放的地方
filename: "bundle.js" //打包后输出文件的文件名
}
}
//注:path.join的功能是拼接路径片段。
扩展:这里再讲一下 filename 扩展写法
output: { //项目出口
path: path.resolve('dist'), // 打包生成路径 绝对路径
/*
打包名称
filename:'js/[name]-[hash:8].js'
[name]文件名称变量 默认main
[hash]生成不重复字符串 :8 一般最少六位
*/
filename: 'bundle-[hash:8].js'
},
2.4 开始进行webpack打包
在终端中使用命令进行打包:
npm run build ---这里前提是我们在 2.1第四步中package.json配置了"build":"server"
注意:package.sjon 文件内不能用注释,不能单引号
上述就相当于把src文件夹下的index.js文件打包到dist文件下的bundle.js,这时就生成了bundle.js供index.html文件引用
运行结果:

三、基本开发环境配置
为了让我们的项目看起来更像真正的公司项目,这里我们要配置生产和开发环境两个版本,方便在以后的项目开发中针对不同的环境进行打包。
3.1、配置基本开发环境
1、在项目根目录中创建一个config目录,专门用于存放webpack的相关配置文件
dev:生产环境
prod:开发环境
这里由于配置文件修改 enrty入口与 path输出位置 也要做相应调整

2、在package.json文件中的scripts自定义命令中修改webpack打包命令
"build-dev": "webpack --config ./config/webpack.config.dev.js",
"build": "webpack --config ./config/webpack.config.prod.js"

3、运行成功:

3.2、html-webpack-plugin插件
首先根目录下面创建一个public目录,并在此目录中创建一个index.html文件,使用 html-webpack-plugin插件,可以将此文件用于项目web入口文件模块。
1、设计与回顾
为了把上面的内容更好地吸收,我们重新撸一下思路。
第一步:创建项目 webpackProject
第二步:生成package.json
打开终端切换到 webpackProject工程下(win+r 输入cmd可以快速打开终端)
执行命令: npm init -y
第三步:下载webpack相关依赖
执行命令:npm i -D webpack webpack-cli
版本参考:"webpack": "^4.44.2", "webpack-cli": "^3.3.12"
第四步:新建子文件

第五步:webpack.config.dev.js内书写打包内容(这里稍稍有些区别)
const path = require('path');
module.exports = {
mode: 'development', //开发环境
entry: "./src/index.js", // 入口文件
output: {
path: path.resolve('dist'), //打包后的文件存放的地方
filename: "[name]-[hash:8].js" //打包后输出文件的文件名
}
}
!!从现在开始是新的内容
第六步:安装html-webpack-plugin ( 版本:"html-webpack-plugin": "^4.4.1",)
执行命令:npm i -D html-webpack-plugin
第七步:webpack.config.dev.js中配置 html-webpack-plugin
// 1、HWP引入
const HtmlWebpackPlugin = require('html-webpack-plugin')
const path = require('path');
module.exports = {
mode: 'development', //开发环境
entry: "./src/index.js", // 入口文件
output: {
path: path.resolve('dist'), //打包后的文件存放的地方
filename: "[name]-[hash:8].js" //打包后输出文件的文件名
},
// 2、HWP使用
plugins:[
new HtmlWebpackPlugin({
title:'welcome Webpack',
template:path.resolve(__dirname,'../public/index.html')
})
]
}
//注:path.join的功能是拼接路径片段。
/*
path.resolve(__dirname,'../public/index.html')
相当于
cd config
cd ..
cd public
cd index.html
*/
# 模板中使用定义的title index.html
<title><%= htmlWebpackPlugin.options.title %></title>
四、构建本地服务器
现在我们是通过打开本地文件来查看页面的,看起来总感觉比较low,看别人用vue,react框架时都是运行在本地服务器上的,那我们能不能也那样呢?那必须的!
4.1 webpack-dev-server配置本地服务器
1、安装相关依赖 npm i -D webpack-dev-server
配置参数说明:
contentBase:'文件位置' 打包服务器所在位置 有变化从新reload
const HtmlWebpackPlugin = require('html-webpack-plugin')
const path = require('path');
module.exports = {
mode: 'development', //开发环境
entry: "./src/index.js", // 入口文件
output: {
path: path.resolve('dist'), //打包后的文件存放的地方
filename: "[name]-[hash:8].js" //打包后输出文件的文件名
},
plugins: [
new HtmlWebpackPlugin({
title: 'welcom to Webpack',
template: path.resolve(__dirname, '../public/index.html'),
})
],
//1、webpack-dev-server相关配置
devServer: {
contentBase:path.resolve(__dirname,'../dist'),//服务器所在位置
//忽略文件
watchContentBase:true,
watchOptions:{
ignored:/node_modules/
},
port:'8088', //端口号
host:'localhost', //域名
open:true, //自动打开浏览器
clientLogLevel:'none', //不显示启动日
quiet:true, //显示基本信息,其余不展示
overlay:false, //错误不全屏显示
//解决跨域
proxy:{
'/api':{
target:'http://localhost:3000',
pathRewrite:{
'^/api':''
}
}
}
}
}
//注:path.join的功能是拼接路径片段。
/*
path.resolve(__dirname,'../public/index.html')
相当于
cd config
cd ..
cd public
cd index.html
*/
3、配置package.json文件件
"server":"webpack-dev-server --config ./config/webpack.config.dev.js"
注意:json文件中不能用‘’单引号,不能写注释

4、终端运行 npm run server

webpack使用详解的更多相关文章
- webpack配置详解
webpack配置详解 先点个赞吧,再挨个点下面的连接,觉得不值这个赞的回来骂我啊. Webpack傻瓜式指南(一) Webpack傻瓜指南(二)开发和部署技巧 Webpack傻瓜式指南 原生的官网详 ...
- webpack入门详解
webpack入门详解(基于webpack 3.5.4 2017-8-22) webpack常用命令: webpack --display-error-details //执行打包 webpa ...
- vue-cli 中的 webpack 配置详解
本篇文章主要介绍了 vue-cli 2.8.2 中的 webpack 配置详解, 做个学习笔记 版本 vue-cli 2.8.1 (终端通过 vue -V 可查看) vue 2.2.2 webpack ...
- vue-cli中webpack配置详解
vue-cli是构建vue单页应用的脚手架,命令行输入vue init <template-name> <project-name>从而自动生成的项目模板,比较常用的模板有we ...
- 10. vue之webpack打包详解
一.什么是webpack webpack官网给出的定义是 本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler).当 webpack 处理应 ...
- 从零学脚手架(三)---webpack属性详解
如果此篇对您有所帮助,在此求一个star.项目地址: OrcasTeam/my-cli 在上一篇中,介绍了webpack的entry.output.plugins属性. 在这一篇,接着介绍其它配置属性 ...
- 详解前端模块化工具-webpack
webpack是一个module bundler,抛开博大精深的汉字问题,我们暂且管他叫'模块管理工具'.随着js能做的事情越来越多,浏览器.服务器,js似乎无处不在,这时,使日渐增多的js代码变得合 ...
- webpack安装配置使用教程详解
webpack安装配置使用教程详解 www.111cn.net 更新:2015-09-01 编辑:swteen 来源:转载 本文章来为各位详细的介绍一下关于webpack安装配置使用教程吧,这篇文章对 ...
- [js高手之路]深入浅出webpack系列2-配置文件webpack.config.js详解
接着上文,重新在webpack文件夹下面新建一个项目文件夹demo2,然后用npm init --yes初始化项目的package.json配置文件,然后安装webpack( npm install ...
- [js高手之路]深入浅出webpack教程系列3-配置文件webpack.config.js详解(下)
本文继续接着上文,继续写下webpack.config.js的其他配置用法. 一.把两个文件打包成一个,entry怎么配置? 在上文中的webpack.dev.config.js中,用数组配置entr ...
随机推荐
- 彻底理解spring框架当中的依赖注入(DI)与控制反转(IOC)理念
什么是依赖注入 人生当中第一次听说到这个概念是在spring框架的学习当中,当然依赖注入并不局限于spring,其实依赖注入早已不是一个新鲜词,而是一个犹如古董般的设计理念,但是我还年轻呐那么就从这里 ...
- spring boot中使用quratz实现定时。 使用task直接调用的实现方法
1.定义工作类 2.创建配置类,将工作对象绑定到工作明细,然后创建触发器 与工作明细进行绑定 二.使用task实现定时任务 1.启动类上开启定时功能 2.在需要定时的任务上增加Schedule注解,并 ...
- 2022/1/25-2022牛客寒假算法基础集训营1B-炸鸡块君与FIFA22(线段树)
题目描述 热爱足球(仅限游戏)的炸鸡块君最近购买了FIFA22,并且沉迷于FIFA22的Rivals排位上分. 在该排位系统中,每局游戏可能有胜利(用W表示).失败(用L表示).平局(用D表示)三种结 ...
- 【填算符】(log 值域的做法)
比赛在这里呢 填算符 下发题解说的神马东西,赛时根本想不到 讲一个赛时想得到的 \(O(n\log 值域)\) 的思路,很好理解 我们处理出二进制下每一位上的 1 的最后一次出现的位置,将第 \(i\ ...
- 【转载】碰碰彭碰彭Jingxuan —— 带中国古筝走上戛纳红毯
视频地址: https://www.youtube.com/shorts/gl796527H1I
- Navicat Premium 16下载与安装
1.可以通过以下两种方式下载 a.官网下载地址 https://www.navicat.com.cn/download/navicat-premium b.百度网盘下载地址 链接:https://pa ...
- Linux中tar文件压缩与解压
文件压缩与解压缩 一般什么情况下使用文件压缩? 备份数据,数据传输 节省磁盘空间 减少带宽使用 减少负载 减少IO操作 什么情况下进行压缩比较合适? 错过业务高峰期,由于文件的压缩会瞬间加大cpu的负 ...
- Converter Tutorial
Setting up a simple example This is the most basic converter... let's start with a simple Person: pa ...
- Python模块之functools.partial
在Python编程中,functools.partial是一个强大的工具,它提供了一种部分应用函数的方式,能够在创建新函数时固定部分参数,从而在后续调用中减少需要传递的参数数量.本文将深入介绍func ...
- golang之媒体处理
[视频] 获取视频封面图: 1) 如果是使用oss的话, 可以添加指定的后缀生成指定图片 视频截帧: https://help.aliyun.com/zh/oss/user-guide/video-s ...