学习整理:用webpack4.x构建基本项目
webpack4 在2018年就已经发布了, 相比webpack3,webpack4需要的配置减少了很多,对入口和出口配置都有默认设置可以不用手动设置,但还是要在webpack.config.js中配置一些会用到的插件。
这段时间学习webpack4,特整理笔记如下,记录用webpack4构建基本项目的过程,如有误欢迎指正!
先上一下配置文件,里面有相关版本号,特别要注意的是babel-core和babel-loader的版本,会有不兼容的情况:

1.首先新建项目目录
- 新建src文件夹和dist文件夹
- 在src文件夹下新建html、css、js、image文件夹,新建index.html和index.js作为入口文件(index.js是webpack4中的默认入口文件,编译后会在dist文件夹下生成main.js文件)
- 执行命令 npm init 初始化项目,生成package.json文件
完成上述后项目目录如下:

2.接下来安装配置webpack4
- 执行命令1: cnpm i webpack@4.39.1 --save-dev
- 执行命令2:cnpm i webpack-cli@3.3.6 --save-dev
Tip:可以在@后面指定版本号
- 然后在package.json文件中添加一个脚本命令
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack --mode production",
},
保存并运行命令 npm run build
(注意webpack4中默认以index.js为入口文件进行编译打包,如果刚才没有新建index.js则会报错。当然也可以指定入口文件)
运行命令成功后会在dist目录下生成一个main.js文件(这个main.js会在index.html中默认引入,实际存在内存中所以看不到)
刚才运行的 npm run build命令是在默认模式下进行打包的,webpack4新增了一个特性就是 production(生产)和 development(开发)模式。两者的区别是,前者打包后的文件是压缩的,而后者这是没有压缩的
通过在package.json中配置不同命令来切换打包模式:
"scripts": {
"dev": "webpack --mode development",
"build": "webpack --mode production"
}
然后可以通过运行不同命令来切换打包模式
- npm run build
- npm run dev
3.下一步安装webpack-dev-server来热更新webpack
- 运行命令cnpm i webpack-dev-server --save-dev
- 成功之后在package.json中增加如下代码:
"scripts": {
"start": "webpack-dev-server --mode development --open",
}
也可以在这条命令中设置默认开启的浏览器和是否热更新,默认开启端口等选项:
"start": "webpack-dev-server --mode development --open firefox --port:8020 --hot --host 127.0.0.1"
完成后保存,运行之后会自动打开浏览器进入页面
4.接下来安装配置Babel来转译ECMA5以上的JavaScript代码
以上步骤都不需要像webpack3一样在webpack.config.js中动手动脚,但配置babel还是要新建一个webpack.config.js文件
- 执行命令 cnpm i babel-core babel-loader babel-preset-env --save-dev (如果有提示版本警告 建议参考文章头部提供的版本号)
- 在根目录新建.babelrc,输入如下内容
{
"presets": [
"env"
]
} - 在根目录中新建webpack.config.js文件,输入如下内容(如果要自定义入口出口,则要自己再配置一下)
module.exports = {
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader"
}
}
]
}
};接下来可以在index.js中手写一些ES6语法的代码来测试一下
5.安装插件:html-webpack-plugin 和 html-loader来处理html
通过安装这两个插件来处理HTML
- 执行命令
cnpm i html-webpack-plugin html-loader --save-dev
- 然后更新webpack.config.js配置
const HtmlWebPackPlugin = require("html-webpack-plugin");
module.exports = {
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader"
}
},
{
test: /\.html$/,
use: [
{
loader: "html-loader",
options: { minimize: true }
}
]
}
]
},
plugins: [
new HtmlWebPackPlugin({
template: "./src/index.html",
filename: "index.html"
})
]
}; - 如果前面创建了index.html,则运行
npm run build
否则新建index.html再运行命令,成功后会发现在dist目录中多了一个index.html文件
做到这里项目的架构已经基本完成了,如果还要还要打包CSS文件可以使用用 mini-css-extract-plugin 等插件,具体请参考 https://www.html.cn/archives/9436
文章可能有一些写的不到位的地方,敬请谅解,欢迎指正!
学习整理:用webpack4.x构建基本项目的更多相关文章
- Maven学习:Eclipse使用maven构建web项目(转)
Maven学习:Eclipse使用maven构建web项目(转) 8.更改class路径:右键项目,Java Build Path -> Source 下面应该有4个文件夹.src/main/j ...
- SpringBoot学习笔记(一)——构建springboot项目
生成一个SpringBoot的项目 开发和学习SpringBoot需要一个生成好的SpringBoot项目. 1.可以使用一些IDE(Integrated Development Environmen ...
- Maven学习日记(一)----构建web项目
创建maven-web项目: dos进入workspace目录: D:\workspace>mvn archetype:create -DgroupId=org.sonatype.mavenbo ...
- maven学习(4)-Maven 构建Web 项目
紧接着上一节(3),现在maven新建web项目,user-web.模拟一个用户登录的需求: 工程结构: pom.xml: <project xmlns="http://maven.a ...
- 使用 TensorFlow 构建机器学习项目中文版·翻译完成
原文:Building Machine Learning Projects with TensorFlow 协议:CC BY-NC-SA 4.0 不要担心自己的形象,只关心如何实现目标.--<原 ...
- (转)Maven学习总结(八)——使用Maven构建多模块项目
孤傲苍狼只为成功找方法,不为失败找借口! Maven学习总结(八)——使用Maven构建多模块项目 在平时的Javaweb项目开发中为了便于后期的维护,我们一般会进行分层开发,最常见的就是分为doma ...
- (转)Maven学习总结(三)——使用Maven构建项目
孤傲苍狼 只为成功找方法,不为失败找借口! Maven学习总结(三)——使用Maven构建项目 maven作为一个高度自动化构建工具,本身提供了构建项目的功能,下面就来体验一下使用maven构建项目的 ...
- Maven学习- 使用Maven构建Web项目
从网上查了一些资料,才算明白(也就是怎么操作吧),怎么使用Maven构建一个Web项目,找到一篇文档,主要都是从这里学到的: 下载地址:使用Eclipse构建Maven的Web项目.docx 现自己在 ...
- vue.js学习之 如何在手机上查看vue-cli构建的项目
vue.js学习之 如何在手机上查看vue-cli构建的项目 一:找到config文件夹下的index.js文件,打开后,将host的值改为你本地的ip,保存后重启项目 二:输入ip和端口号打开项目 ...
随机推荐
- 为什么一直玩A股的股民转战去玩港美股了?港美股系统搭建!
今天先聊一下,为什么买港美股?不买 A 股? 1.A 股散户太多,港股美股机构居多. A 股市场,散户占据了70%以上交易份额,散户太多有什么坏处?少量的机构和大户很容易坐庄操控股价.A 股几乎所有票 ...
- python函数对象-命名空间-作用域-02
函数对象 函数是第一对象: # 函数名指向的值可以被当做参数传递 函数对象的特性(*****灵活运用,后面讲装饰器会用到) 函数名可以像变量一样被传递 # 变量可以被传递 name = 'jason' ...
- Java、Java SE、Java Web和Java EE的区别
刚接触Java对这些概念上的东西有点模糊,查了很多资料,想把它分享出来,要是哪里不对请大家指正(^_^) 1.Java 毫无疑问这就是门语言和C.C++.C#一样没什么好说的. 2.Java SE和J ...
- Centos7安装mysql8教程
网上的教程很多,我也参考了很多,以下是我实践的步骤,真实有效. 1.配置Mysql 8.0安装源: sudo rpm -Uvh https://dev.mysql.com/get/mysql80-co ...
- Soso(嗖嗖)移动 java 项目
1.接口 通话服务 package Soso; // 接口 通话服务 public interface CallService { public abstract int call(int minCo ...
- activeMQ_helloworld(一)
一.activeMQ下载,直接在Linux上wget http://mirror.bit.edu.cn/apache//activemq/5.14.5/apache-activemq-5.14.5-b ...
- Golang高效实践之泛谈篇
前言 我博客之前的Golang高效实践系列博客中已经系统的介绍了Golang的一些高效实践建议,例如: <Golang高效实践之interface.reflection.json实践>&l ...
- WPF滑块控件(Slider)的自定义样式
前言 每次开发滑块控件的样式都要花很久去读样式代码,感觉有点记不牢,所以特此备忘. 自定义滑块样式 首先创建项目,添加Slider控件. 然后获取Slider的Window样式,如下图操作. 然后弹出 ...
- C#中属性的解析
一.域的概念 C#中域是指成员变量和方法,在OOP编程中(面向对象编程)我们要求用户只知道类是干什么的,而不许知道如何完成的,或者说不允许访问类的内部,对于有必要在类外可见的域,我们用属性来表达,所以 ...
- Spring 常犯的十大错误,答应我 打死都不要犯好吗?
1. 错误一:太过关注底层 我们正在解决这个常见错误,是因为 “非我所创” 综合症在软件开发领域很是常见.症状包括经常重写一些常见的代码,很多开发人员都有这种症状. 虽然理解特定库的内部结构及其实现, ...