0%

webpack简单配置

今天学习一下如何创建自己的WebPack配置以使用WebPack和Babel捆绑小型JavaScript实用程序库。

初始化

在一个文件夹下执行以下命令

1
$ npm init -y

改命令会创建一个package.json文件夹, -y表示按照默认配置生成模板

1
2
demo
|-- package.json
1
2
3
4
5
$ mkdir src //创建src文件夹
$ cd src
$ touch addDOMContent.js
$ touch capital.js
$ touch index.js //主文件夹

文件目录如下

1
2
3
4
5
6
demo
|-- package.json
|-- src
|--index.js
|--capital.js
|--addDOMContent.js

向src中的文件中添加内容

capital.js

1
2
3
4
5
6
7
function capital(string) {
const capitalizedString =
string.substring(0, 1).toUpperCase() + string.substring(1)
return capitalizedString
}

export default capital

addDOMContent.js

1
2
3
4
5
6
7
function addDOMContent(content) {
const node = document.createElement("h1")
node.innerText = content
document.body.appendChild(node)
}

export default addDOMContent

index.js

1
2
3
4
import capital from "./capital"
import addDOMContent from "./addDOMContent"

export { capital, addDOMContent }

安装 babel语法转换器

此时如果直接执行任意一个js文件,会发现程序报错,原因是导出的时候使用的是es6的语法,所以需要安装将es6语法装换成es5语法的相关依赖

1
$ npm i --save-dev webpack webpack-cli @babel/core @babel/preset-env babel-loader

此时,package.json文件会多出以下配置

1
2
3
4
5
6
7
"devDependencies": {
"@babel/core": "^7.16.0",
"@babel/preset-env": "^7.16.4",
"babel-loader": "^8.2.3",
"webpack": "^5.64.1",
"webpack-cli": "^4.9.1"
}

创建 webpack.config.js 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const path = require("path")

module.exports = {
entry: path.resolve(__dirname, "src/index.js"), //打包入口文件
output: {
path: path.resolve(__dirname, "dist"),//打包后的文件夹
filename: "index_bundle.js", //打包后的文件名称
library: "$", // 库名称
libraryTarget: "umd", // 通用模块定义
},
module: {
rules: [
{
test: /\.(js)$/,
exclude: /node_modules/, //不解析node_modules文件夹中的文件
use: "babel-loader", // 用babel-loader解析所有的以.js为后缀的所有文件
},
],
},
mode: "development",
}

更多配置内容看这里:https://webpack.docschina.org/configuration/

创建一个 .babelrc 文件

添加如下内容

1
2
3
{
presets: ["@babel/preset-env"]
}

在package.json中添加如下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"name": "demo",
"version": "1.0.0",
"description": "",
+ "main": "dist/index_bundle.js",
+ "scripts": {
+ "build": "webpack"
+ },//+表示添加的内容
"keywords": [],
"author": "Hridayesh Sharma",
"license": "ISC",
"dependencies": {},
"devDependencies": {
"@babel/core": "^7.10.4",
"@babel/preset-env": "^7.11.0",
"babel-loader": "^8.1.0",
"webpack": "^4.44.1",
"webpack-cli": "^3.3.12",
}
}

打包编译

1
$ npm run build 

此时会生成打包后的文件

创建index.html文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Demo</title>
</head>
<body>
<script src="dist/index_bundle.js"></script>
<script>
console.log($)
alert($.capital("hridayesh"))
$.addDOMContent("Well It Works Fine!!!")
</script>
</body>
</html>

最后在浏览器中打开该静态index.html文件,完成!!!!