因为安装webpack要用npm, 所以安装之前我们首先要安装node
第一步:初始化
要在项目根目录用npm init初始化,生成package.json文件
npm init
初始化过程中会有好多提示,可以直接回车一步步直到完成,也可以设置具体的信息
package name: (webpack) // 项目名称
version: (1.0.0) // 版本号
description: // 项目的描述
entry point: (webpack.config.js) // 入口文件
test command: // 测试命令
git repository: // git仓库
keywords: // 关键字
author: // 作者
license: (ISC)
About to write to D:\study\wnmp\PHPTutorial\WWW\test\webpack\package.json:
{
"name": "webpack",
"version": "1.0.0",
"description": "",
"main": "webpack.config.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
Is this OK? (yes)
第二步 安装webpack
npm install webpack -g // 全局安装 或 npm install webpack --save-dev // 项目内安装
如果不想安装最新的版本那么得在webpack后面加一个@然后在填入你要安装的版本号;当然安装最新版本时可以加@版本号也可以不加@版本号
npm install webpack@xx -g npm install webpack@xx --save-dev
这里的xxx 指的版本号,如 3.1.9
注意:webpack4版需要去额外安装webpack-cli
npm install webpack-cli --save-dev
如下是package.json文件的内容:
{
"name": "webpackdemo",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"webpack": "^4.29.5",
"webpack-cli": "^3.2.3",
}
}
注意:package.json文件中不能有注释,在运行的时候请将注释删除
如下是我的DEMO项目的目录结构

具体代码内容如下:
index.html 文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>webpack打包</title>
</head>
<body>
<div id="root"></div>
<script src="./dist/bundle.js"></script>
</body>
</html>
其中,上图中 ./dist/bundle.js 为打包后的输出的js文件
src/index.js 文件:
let Component = require('./component');
new Component();
src/component.js文件:
let Comp2 = require("./component2");
Comp2.printLog();
function Component(){
let root = document.getElementById('root');
let sidebar = document.createElement('div');
sidebar.innerText = '欢迎使用webpack工具进行js打包!';
root.append(sidebar);
}
module.exports = Component;
src/component2.js文件:
module.exports.printLog = function (){
//console.log("print info");
console.log("打印一个信息");
}
第三步 使用Webpack打包
webpack可以在终端中使用,基本的使用方法如下:
node_modules/.bin/webpack src/index.js -o dist/bundle.js
- src/index.js:是入口js文件的
- dist/bundle.js:是打包后输出的js文件
打包时的输出信息:
$ node_modules/.bin/webpack src/index.js -o dist/bundle.js
Hash: 4e280200a490a8b75419
Version: webpack 4.42.0
Time: 598ms
Built at: 2020-03-02 21:18:04
Asset Size Chunks Chunk Names
bundle.js 1.16 KiB 0 [emitted] main
Entrypoint main = bundle.js
[0] ./src/index.js 59 bytes {0} [built]
[1] ./src/component.js 280 bytes {0} [built]
[2] ./src/component2.js 124 bytes {0} [built]
在浏览器中访问的结果:

第四步 对webpack.config.js 文件的配置
const path = require('path');
module.exports = {
mode: 'production', //开发模式development 下打包的bundle不压缩 ,生产环境下打包改为: production
// 要打程序的入口文件
entry: './src/index.js',
// 输出配置
output: {
filename: 'bundle.js', //输出文件名
path: path.resolve(__dirname, 'dist') //输出文件夹
}
}
注:“__dirname”是node.js中的一个全局变量,它指向当前执行脚本所在的目录。
有了这个配置之后,再打包文件,只需在终端里运行webpack(全局情况下)或node_modules/.bin/webpack(非全局安装需使用)命令就可以了
如下图:
