使用webpack构建web项目以及热部署插件的使用,按以下步骤,能帮助你快速构建和理解~
详细学习还得靠官方文档!
一,基础构建部分
大前提!你得先安装了Node.js此处不赘述。
1,创建一个文件夹
2,在当前文件夹子下打开命令行工具
3,项目初始化(创建package.json文件)
npm init -y
4,安装依赖
版本搭配如下:
"devDependencies": {
"webpack": "^4.17.1",
"webpack-cli": "^3.3.9",
"webpack-dev-server": "^3.8.2",
}
复制粘贴到【命令行工具】回车,安装依赖以上依赖,会自动在package.json写入上述依赖。
npm install webpack@^4.17.1 webpack-cli@^3.3.9 webpack-dev-server@^3.8.2 --save-dev
显示安装完成:
5,补充一个依赖-插件:
用途:如果没有此插件需要我们手动给index.html文件引入 bundle.js。使用此插件我们将会自动在打包的时候创建index.html,且无须关心bundle.js的文件路径。
复制粘贴到【命令行工具】回车
npm install html-webpack-plugin --save-dev
插件如何配置使用,html-webpack-plugin官方说明文档
此时查看文件夹内容如下:
6,补充文件结构:
7,补充webpack.config.js的内容:
webpack官方说明文档整理出来给你后续自己补:
1,webpack的基础配置
2,webpack-dev-server的官方说明文档
3,html-webpack-plugin官方说明文档
// webpack.config.js
const path = require('path');
const htmlWebpackPlugin = require("html-webpack-plugin");
module.exports = {
entry: './src/main.js',//定义入口文件
output: {
filename: 'bundle.js',//定义输出文件名称
path: path.resolve(__dirname, 'dist')//定义输出文件路径
},
devServer: { //配置webpack-dev-server(开发环境用的热部署)
contentBase: "./dist",//定义默认打开路径,会自动寻找该路径下的index.html文件。
host:"localhost",//定义主机
port:8000,//定义端口号
open:true//定义是否自动打开页面
},
plugins: [
new htmlWebpackPlugin()//配置此插件会自动生成一个index.html并且自动引入bundle.js从而我们无需关心bundle.js的路径问题。
]
};
在main.js文件编写测试代码。
document.write("hello webpack!!")
二,测试部分
- 测试打包到本地
注意:若不使用html-webpack-plugin则需要在dist目录下的index.html里手动引入js文件。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="bundle.js"></script>
</head>
<body>
</body>
</html>
终端输入:webpack
打包成功后,此时dist目录下会多一个,bundle.js文件,
若使用html-webpack-plugin插件其实index.html会自动创建并且覆盖原先我自己创建的index.html。
打开dist目录下的index.html文件。查看测试结果
- 测试打包到虚拟服务器内存
大家都知道的小技巧~
在package.json文件下配置下webpack-dev-server的快捷键。
配置完成后就可以在终端使用:npm run dev 进行打包了。
自动打开页面~注意看地址栏与上边本地打开的区别。
到这里,已经做好了基本的搭建了。
踩过的坑:
不指定版本号直接安装以下依赖:
- webpack
- webpack-cli
- webpack-dev-server
npm install webpack webpack-cli webpack-dev-server --save-dev
使用热部署(webpack-dev-server)会出现如下报错:
Error: Cannot find module 'webpack-cli/bin/config-yargs’
出现该报错的小伙伴可以尝试文章中提到的搭配的版本~
webpack默认只能打包json模块和js模块,对于其他模块的打包例如css,图片,等需要借助于相应的loader插件~下次有机会继续分享。