已经安装node和npm。
创建一个文件夹,这里创建的是webpacklearn文件,cd到该文件夹下,输入命令(快速初始化项目)
npm init --yes
执行这个命令之后根目录下会多出一个package.json文件。
First
安装webpack及webpack-dev-server(用于开发的本地服务器)
$ npm i -g webpack webpack-dev-server
Second
根目录下创建src文件夹,src文件夹下创建index.js
document.write("learning Webpack")
根目录下创建config文件夹(专用于放置配置文件),然后在config下创建配置文件webpack.config.js;
var path = require('path');
module.exports = {
entry: './index.js', //项目入口
context: path.resolve(__dirname, "./../src"), //webpack在寻找入口文件时会以此为根目录
output: {
path: path.resolve(__dirname, './../dist'), //要输出的路径
filename: 'bundle.js' //打包后的输出文件
},
mode: 'production',
devServer: {
contentBase: path.join(__dirname,'./..) //告诉服务器从哪里提供内容。默认当前工作目录
}
};
Third
在package.json文件的scripts键下添加这两项。
"build": "webpack --config config/webpack.config.js",
"dev": "webpack-dev-server --config config/webpack.config.js"
其中,第一项代表当执行npm run build时会执行webpack --config config/webpack.config.js命令,简化了打包时的操作。
第二项代表当执行npm run dev时会开启本地服务器,默认地址是localhost:8080(也可以自己配置打开的地址)。
Fourth
根目录下创建index.html文件。引入bundle.js
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Webpack</title>
</head>
<body>
<script type="text/javascript" src="bundle.js"></script>
</body>
</html>
Fifth
cd到项目根目录输入命令npm run dev
,提示本地服务器已启动,打开localhost:8080可以看到页面上输出了learning Webpack。
输入命令npm run build
,执行打包命令,成功后可以看到根目录下生成一个文件夹dist,其中包含了文件bundle.js。(注意,index.html不能直接在file:路径下打开。)
至此,webpack项目创建完成。
一、模块热替换HMR
如若需要启动模块热替换(HMR - Hot Module Replacement)功能(即在应用程序运行过程中替换、添加或删除模块,而无需重新加载整个页面),只需要在webpack.config.js文件下的’devServer’键下追加
hot: true,
inline: true
然后在package.json文件下,对"dev"作出以下修改:
"dev": "webpack-dev-server --config config/webpack.config.js --inline --hot"
重新启动本地服务器npm run dev,打开localhost:8080。
在index.js中改learning为hello,无需刷新,即可看到页面自动更改为hello webpack。
二、关于webpack4.0+版本
如果你的webpack版本是4.0+的版本,当你运行时会报以下错误,提示cli需要另外安装。
The CLI moved into a separate package: webpack-cli
Please install ‘webpack-cli’ in addition to webpack itself to use the CLI
故此时需要运行命令npm i -D webpack-cli
。
如果安装webpack-cli之后,还一直报以上错误,则有可能是因为webpack是全局安装,所以webpack-cli也同样需要全局安装npm i -D webpack-cli -g
。