前端小白webpack学习(二)
前一篇写了自我总结的webpack定义:为JavaScript服务的静态模块打包器 和几大基本概念 entry、output、plugins、loaders等。指路前端小白webpack学习(一)
下面开始webpack的具体使用。
webpack使用
创建新项目,项目目录如下。

- src目录下存放项目源码,index.html作为项目入口;
- dist目录存放打包好的文件
2.webpack安装
webpack安装分两种:
全局安装
npm i webpack webpack-cli -g项目中安装(推荐)
npm i webpack webpack-cli -D
进去项目根目录,终端输入
npm i webpack webpack-cli -D
安装完成显示:

此时,项目中会多出一个package-lock.json和node_modules文件夹
3.初始化项目
终端输入
npm init -y,完成后项目根目录多出一个package.json文件(忘截图了)4.webpack打包
首先,在src目录下创建一个main.js文件,js中写入相应代码。为了书写方便,我又在项目中安装了jQuery,安装命令为
npm i jquery -D//main.js //js中引入jQuery模块
import $ from 'jquery' $(function () {
$('li:odd').css('color', 'red');
$('li:even').css('color', 'blue')
})
终端输入
webpack .\src\main.js -o .\dist\bundle.js,将src下的main.js文件打包成bundle.js存在dist目录下(看学习视频时,老师使用的命令是webpack .\src\main.js .\dist\bundle.js,结果疯狂报错,后来百度之后发现是webpack版本过高,应该用webpack .\src\main.js -o .\dist\bundle.js)打包完之后显示:

- 此时,dist目录下多出一个bundle.js文件。在index.html中引入bundle.js,页面中已经显示变化。说明打包成功。

5.webpack配置
项目根目录下创建webpack.config.js文件,打包时若命令中没有指定项目的打包文件,webpack则会去该文件下应用用户配置的操作。(在node中,'__dirname'指向被执行文件的绝对路径)
//webpack.config.js /* node.js 中的path模块,用来处理文件路径 */
const path = require('path')
/* 向外输出配置模块 */
module.exports = {
entry:path.join(__dirname,'./src/main.js'), //打包入口,将main.js打包
output:{
path:path.join(__dirname,'./dist'), //打包输出路径
filename:'bundle.js' //打包输入文件名
}
}
此时,删除之前dist目录下的bundle.js文件,终端中直接输入
webpack,会重新生成一个bundle.js,打包成功
6.webpack-dev-server使用
webpack-dev-server是一个小型的
Node.js Express服务器,它使用webpack-dev-middleware来服务于webpack的包,终端输入
npm i webpack-dev-server -D安装webpack-dev-server,安装成功如下。
点开package.json文件,在scripts标签下配置webpack-dev-server

此时,运行`npm run dev`,项目在打包后会自动运行在localhost上(默认为8080端口,我的8080端口被占用了,因此变成了8081)  进入http://localhost:8081/,页面显示如下  点击进入src后,显示项目主页面,即entry中配置的页面
webpack参数配置
- 在package.json中配置
"dev":"webpack-dev-server --open --port 5000 --hot --contentBase src"
--open :打包完成后自动打开页面 --port 5000:指定服务器端口号为5000 --hot:模块热替换。配置这个参数可以让页面在加载时只替换更新过的部分,而不是页面重载 --contentBase src:指定服务器的根目录为src目录,webpack-dev-server默认以当前目录为基本目录
或者进入webpack.config.js中,在输出模块中配置。此时package.json中应配置为"dev":"webpack-dev-server"
/* node.js 中的path模块,用来处理文件路径 */
const path = require('path')
/* 向外输出配置模块 */
module.exports = {
entry:path.join(__dirname,'./src/main.js'), //打包入口,将main.js打包
output:{
path:path.join(__dirname,'./dist'), //打包输出路径
filename:'bundle.js' //打包输入文件名
},
devServer:{ //webpack-dev-server配置
open:true,
port:5000,
contentBase:'src',
hot:true
}
}
- 终端输入
npm run dev,运行后直接进入项目主页面
前端小白webpack学习(二)的更多相关文章
- 前端小白webpack学习(一)
俗话说得好,好记性不如烂笔头. 之前就在学习中看过webpack的教程,然而一段时间没用,火速的忘光了.写这篇博文,做个总结,也让自己以后有个地方回顾. 看webpack之前,我先去看了一下官方文档, ...
- 前端小白webpack学习(四)
.less文件与.scss文件使用与.css文件相仿 less-loader使用需要借助less插件,终端输入npm i less less-loader -D安装; sass-loader使用需要借 ...
- 前端小白webpack学习(三)
不写不知道,一写发现自己真是罗里吧嗦,尽量改进 之前写了webpack的主要概念和一些使用,今天再记一下webpack的plugins和loaders的使用 7.webpack plugins使用 例 ...
- 前端小白的学习之路html与css的较量【二】
标签的划分 块级元素 独占一行 设置 宽 高可以起作用 排列方式: 上下排列 行内元素 可以共占一行 设置 宽 高 不起作用,大小由内容决定 排列方式:左右排列 行内块 可以共占一行 可以设置宽 高 ...
- 前端小白的学习之路html与css的较量【一】
html和css的较量 web结构的组成 html标签规则 快速生成一个html html的基本结构 标签的关系 标签 标题标签 段落 图片 超链接 a 属性 a标签里面的值 字符实体 新增的标签 1 ...
- webpack前端构建工具学习总结(二)之loader的使用
Webpack 本身只能处理 JavaScript 模块,如果要处理其他类型的文件,就需要使用 loader 进行转换. Loader 可以理解为是模块和资源的转换器,它本身是一个函数,接受源文件作为 ...
- webpack前端构建工具学习总结(一)之webpack安装、创建项目
npm是随nodeJs安装包一起安装的包管理工具,能解决NodeJS代码部署上的很多问题: 常见的使用场景有以下几种: 允许用户从NPM服务器下载别人编写的第三方包到本地使用. 允许用户从NPM服务器 ...
- 深入学习webpack(二)
深入学习webpack(二) 在深入学习webpack(一)中,我通过一个例子介绍了webpack的基本使用方法,下面将更为系统的学习webpack的基本概念,对于一门技术的掌握我认为系统化还是很重要 ...
- webpack前端构建工具学习总结(四)之自动化生成项目中的html页面
接续上文:webpack前端构建工具学习总结(三)之webpack.config.js配置文件 插件的介绍文档:https://www.npmjs.com/package/html-webpack-p ...
随机推荐
- 不用任何第三方,写一个RTMP直播推流器
2016年是移动直播爆发年,不到半年的时间内无数移动直播App掀起了全民直播的热潮.然而个人觉得直播的门槛相对较高,从推流端到服务端器到播放端,无不需要专业的技术来支撑,仅仅推流端就有不少需要学习的知 ...
- 常用tab选项卡代码
<div class="box"> <ul> <li class="one">课程介绍</li> <li& ...
- hybrid app初体验,和react-native一起飞
第一次启动了react-native的示例,今天主要把其中遇到的坑与解决的办法分享给大家.如有疏漏.错误还望指正. 首先还是要从hybrid app这个概念说起(如果对于这个过程不感兴趣的同学,可以直 ...
- 更适合Pythoner的标记语言Yaml学习总结
pythonic的标记语言 之前总结过一篇关于小数据存储文件大比拼,当时着重介绍了json,因为它在各类编程语言的通用性较强.但今天,我想给大家介绍一款更加适合pythoner使用的语言Yaml. Y ...
- luogu P3913 车的攻击 |数学
题目描述 N×N 的国际象棋棋盘上有KK 个车,第ii个车位于第R_i行,第C_i列.求至少被一个车攻击的格子数量. 车可以攻击所有同一行或者同一列的地方. 输入格式 第1 行,2 个整数N,K. 接 ...
- iOS开发UI篇—Quartz2D使用(图形上下文栈
转自:http://www.cnblogs.com/wendingding/p/3782489.html 一.qurza2d是怎么将绘图信息和绘图的属性绘制到图形上下文中去的? 说明: 新建一个项目, ...
- docker实践之docker-compose部署mysql
文章目录 docker实践之docker-compose部署mysql 1.安装部署docker 2.编写docker-compose文件 3.编写配置文件和初始化文件 4.启动数据库 5.检查初始化 ...
- HDU3870-Caught these thieves(最小割->偶图->最短路问题)
A group of thieves is approaching a museum in the country of zjsxzy,now they are in city A,and the m ...
- 最全的linux系统安装教程和排错方法
第4章 linux信息和系统安装与连接 260 4.1 linux的发展历史 260 4.2 GPL协议,FSF协议 261 4.3 linux系统的安装 261 4.3.1 ...
- JS内置对象-Array之forEach()、map()、every()、some()、filter()的用法
简述forEach().map().every().some()和filter()的用法 在文章开头,先问大家一个问题: 在Javascript中,如何处理数组中的每一项数据? 有人可能会说,这还不简 ...