一、项目
①
新建项目空白目录,并运行
npm init –y
命令,初始化包管理配置文件
package.json
②
新建
src
源代码目录
③
新建
src ->
index.html
首页
④
初始化首页基本的结构
⑤
运行
npm install jquery –S
命令,安装
jQuery
⑥
通过模块化的形式,实现列表隔行变色效果
二、
安装和配置 webpack
①
运行
npm install
webpack webpack-cli
–D
命令,安装
webpack
相关的包
②
在项目根目录中,创建名为
webpack.config.js
的
webpack
配置文件
③
在
webpack
的配置文件中,初始化如下基本配置:
④
在
package.json
配置文件中的
scripts
节点下,新增
dev
脚本如下:
⑤
在终端中运行
npm run dev
命令,启动
webpack
进行项目打包。
三、
配置打包的入口与出口
webpack
的
4.x
版本中默认约定:
打包的
入口文件
为
src -> index.js
打包的
输出文件
为
dist -> main.js
如果要修改打包的入口与出口,可以在
webpack.config.js
中新增如下配置信息:
const path = require('path') //
导入
node.js
中专门操作路径的模块
module.exports = {
entry
: path.join(__dirname, './src/index.js'), //
打包入口文件的路径
output
: {
path
: path.join(__dirname, './dist'), //
输出文件的存放路径
filename
: 'bundle.js' //
输出文件的名称
}
}
四、
配置 html-webpack-plugin 生成预览页面
①
运行
npm install html-webpack-plugin –D
命令,安装生成预览页面的插件
②
修改
webpack.config.js
文件头部区域,添加如下配置信息:
③
修改
webpack.config.js
文件中向外暴露的配置对象,新增如下配置节点:
//
导入生成预览页面的插件,得到一个
构造函数
const
HtmlWebpackPlugin
= require('html-webpack-plugin')
const
htmlPlugin
= new
HtmlWebpackPlugin
({ //
创建插件的实例对象
template: './src/index.html', //
指定要用到的模板文件
filename: 'index.html' //
指定生成的文件的名称,该文件存在于内存中,在目录中不显示
})
module.exports = {
plugins
: [
htmlPlugin
] // plugins
数组是
webpack
打包期间会用到的一些插件列表
}
五、
配置 webpack 的自动打包功能
①
运行
npm install webpack-dev-server –D
命令,安装支持项目自动打包的工具
②
修改
package.json -> scripts
中的
dev
命令如下:
③
将
src -> index.html
中,
script
脚本的引用路径,修改为
"/buldle.js“
④
运行
npm run dev
命令,重新进行打包
⑤
在浏览器中访问
http://localhost:8080
地址,查看自动打包效果
"scripts": {
"dev": "
webpack-dev-server
" // script
节点下的脚本,可以通过
npm run
执行
}
注意:
webpack-dev-server
会启动一个实时打包的
http
服务器
webpack-dev-server
打包生成的输出文件,默认放到了项目根目录中,而且是虚拟的、看不见的
六、
配置自动打包相关的参数
// package.json
中的配置
// --open
打包完成后自动打开浏览器页面
// --host
配置
IP
地址
// --port
配置端口
"scripts": {
"dev": "webpack-dev-server --open --host 127.0.0.1 --port 8888"
},
webpack.config.js
var HtmlWebpackPlugin = require('html-webpack-plugin');
const path = require('path');
// const { webpack } = require('webpack');
// new webpack.HotModuleReplacementPlugin();
module.exports = {
// 编译模式
mode: 'development', // mode 用来指定构建模式
entry: path.join(__dirname, './src/index.js'), // 打包入口文件的路径
output: {
path: path.join(__dirname, './dist'), // 输出文件的存放路径
filename: 'bundle.js' // 输出文件的名称
},
plugins: [new HtmlWebpackPlugin({
template: path.join(__dirname, 'src', 'index.html'),
filename: 'index.html'
})],
devServer: {
port: 5500,
static: path.join(__dirname, 'dist'),
}
}
package.josn
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"dev": "webpack-dev-server"
},